记录一次芯片的地址计算
地址介绍
前几天刚发了一篇ltc2497的六层板绘制过程,这两天准备写它的驱动,奈何芯片比较小众只能自己写(练习一下)
先看他的地址列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
|
看起来很复杂,貌似没有规律
地址计算
刚开始我也没看出来,然后我把它放到万能的excel中排了一下序列,结果如下
(第一排是16进制,缺了 0x 不要介意)

规律如下:
- 第一排的第一个数字,也就是地址前四位依次为1-7
- 第二排都为4-7
- low < float < high
是不是发现了规律
本质上就是三进制转为8进制+4进制再加一个基地址0x14
程序编写验证
拿clion新建了个工程试一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| void set_ltc2497_adress(uint8_t addr2,uint8_t addr1, uint8_t addr0) { uint8_t num = 0x00; num = addr2*9 + addr1*3 + addr0*1; num = ((num/4) << 4)|(num%4); num = num + 0x14; std::cout << "address: " << "0x" << std::hex << int(num) << std::endl;
}
int main() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { set_ltc2497_adress(i, j, k); } } }
system("pause"); return 0; return 0; }
|
输出结果如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| address: 0x14 address: 0x15 address: 0x16 address: 0x17 address: 0x24 address: 0x25 address: 0x26 address: 0x27 address: 0x34 address: 0x35 address: 0x36 address: 0x37 address: 0x44 address: 0x45 address: 0x46 address: 0x47 address: 0x54 address: 0x55 address: 0x56 address: 0x57 address: 0x64 address: 0x65 address: 0x66 address: 0x67 address: 0x74 address: 0x75 address: 0x76
|
至此,结束
本文作者:wxy
本文链接: https://c.undf.top/posts/2scrgfh/
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。
本站不设评论,网站底部邮件图标可以联系博主
评论
如评论失效,请点击最下方的邮件图标联系作者。