在线时间57 小时
UID3080775
注册时间2014-12-5
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 357
- 最后登录
- 2015-12-1
|

楼主 |
发表于 2015-1-19 16:30:34
|
显示全部楼层
本帖最后由 cjpx84 于 2015-1-19 16:40 编辑
我配置芯片的主频为48MHZ,总线频率为24MHZ,I2C的配置为MULT为0x01,icr为0x1f,这样算出来我的I2C的波特率为50kbs,按照这个配置,会出现读数据的时候读取到的数据全1,对比波形丢了一个repeart start信号。在此基础上做了几个实验:
1)将mult配置成0x00,icr配置不变,此时i2c的波特率为100kbs,在这种配置下,读写数据正常。怀疑是i2c的波特率太低导致的问题,因此重新将i2c的波特率配置成50kbs。
2)将mult 配置成0X00,icr配置成0x27,此时i2c的波特率为50kbs,经过实验验证,读写数据正常。该试验保持了波特率为50kbs,与之前的50kbs保持一致,只是修改了mult的值为0x00,而此时读写数据正常,基本可以确定与I2C的波特率无关。上面两个数据读写正常的实验,mult的值都为0x00,因此怀疑是不是mult的值导致的,在第三个实验中,将mult的值做了改变。
3)将mult配置成0x01,icr配置成0x27,此时波特率为25kbs,按照这个配置读取数据全1的情况又出现了。第三个实验与第二个实验相比,只改变了mult的值,因此mult的非常怀疑是mult的值导致了目前我出现的这个问题。
但是,对比了下数据手册,配置mult和icr对波特率和保持时间的影响基本上是一致的,而现在感觉是只要将mult配置成0x01,读数据就会出现全1的情况,请问这是什么原因引起的呢?是不是mult还有其他在手册上没有标明的作用?
|
|