再码底层,发现又有好多细节忘了,这里特地记录下。
1、..\SOURCE\LED.C(3): error C129: missing ';' before 'LedChar'
的奇怪错误
找了半天发现自己忘了定义u8, u16 ,u32的具体类型,然后一直提示这个毫无相干,也不知道怎么联系的错误。低级!!!
2、这个顺序是和数码管的怎么显示是有关系的!
我们想要的是左边代表做高位,右边代表最低位,所以写0x80
!然后移位操作。
3、注意1302的突发读和写的时候,前面是有一句指令的!
0-写 1-读 对应BF读 BE写
同样对E2PROM也适用,0x50写, 再或上0x01就是读了!
4、1302突发读时需要注意,最后加上DS1302_IO = 0;
扫描二维码关注公众号,回复:
1525949 查看本文章
5、关于结构体操作时钟芯片1302时需要注意:
- 输入参数是结构体时,访问不能使用点运算符!
- buf数组的大小,年月日时分秒周,所以八个是最好了,不要忘了周!
- 还有就是数组下标和表示含义的对应关系,7-没有含义(最好不要省略一并加上),6-年 4-月 3-日 2-时 1-分 0-秒 5-周
6、18B20中的一个问题
注意对比时序图,最后一句while很关键啊!
一个找了半天的错误,,,,
光想温度不对,底层都对,咋没想到刷新的时候需要不断开启呢?
还有几个指令
这两个指令容易忘记
我的天,18B20每位写完之后必须释放总线!!!
7、关于I2C底层
写完进行读取回应和正常读的过程都是一样的,先确保数据总线释放,然后拉高SCL,然后读取。
i2c中用到了延时是5us
8、关于E2PROM中需要addr++
的事
读是可以连续的,只需要控制好buf++
以及len--
就可以。
写虽然也可以连续写,但是有一个跨页问题,需要特别处理,所以需要对addr++
后进行检测, 判断是否是跨页!!!
9、8591较E2写法略有不同,一旦没有检测到就返回,而不是像E2一样重复检测!