I2C总线配置与测试(CCS裸班测试)


1、  管脚复用

在gel文件中可以找到控制管脚复用的寄存器,一般为PINMUX寄存器,例如I2C时钟线连接GPIO20管脚,查手册知此管脚的控制位为PINMUX3寄存器的21与22位,两位都为一时为gpio口,为1和0时为I2C口。设为I2C时可写为

           PINMUX3 |= 0x0400000;

           PINMUX3 &= ~0x0200000;


2、时钟频率设置

I2C的初始化函数为

          Int16 EVMDM365_I2C_init()

         {

          I2C-ICMDR = 0;               //reset I2C

          I2C-ICPSC = 2;                //config prescaler for 8Mhz

          I2C-ICCLKL = 35;               //config clk LOW for 100kHz

          I2C-ICCLKH = 35;                //config clk HIGH for 100kHz

          I2C-ICMDR |= ICMDR-IRS;         //release I2C from reset

         }

计算公式为:

                prescaler = 输入时钟/(I2C-ICPSC +1),且要求prescaler大于5Mhz小于16Mhz

                I2C时钟线频率=prescaler/(I2C-ICCLKL+I2C-ICCLKH+10)

输入时钟为24MHz,经过上述计算得I2C时钟为100kHz


3、I2C时序

正确的I2C时序可如下表示:



时序问题是I2C的关键,需要注意的是:

1)  设备地址:一般为7位地址和1位读写位,实际地址左移一位,例如设备读地址为0xD0,实际为0x68

2)  寄存器地址:寄存器地址为1字节还是2字节?寄存器是只读还是可读写?寄存器的某几位是否已经写死?

3)  读时序:读时序需要先写再读,且写后不能有stop,这就需要写完改写某些寄存器位的值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值