最近在用MCP3421,需要用到IIC接口。MCU用的是STM8S105K6T6。使用MCU内部的IIC外设,这个接口配置折腾一下午,遇到了很坑爹的事情。我使用的是寄存器开发的,该设置了感觉都设置好了,就是不能工作。后来以为没配置好,又用库函数来开发,妈的 ,还是不能工作。后来在群里的一位大神的指导下成功的调通了IIC。
闲话有点多,毕竟是我第一次开通博客来写博客的,心情不免有些激动。现在把经验分享给不知道的小伙伴们,少走些弯路。
在使用STM8S105K6T6的IIC前,必须先通过STVP这个软件来进行配置。
这三个步骤是最重要的,当然还需要选择单片机的下载模式,型号什么的,这个不是本文的重点。特别要强调一点,步骤二中
一定要选择第二功能,SCL,SDA。 这个配置好了,然后点击下载就OK了,
现给出寄存器版的IIC初始化代码:
void IIC_Init(void)
{
I2C_CR1 =0x00; //禁止iic
I2C_FREQR = 0x10; //输入时钟频率16MHz
I2C_TRISER= 0x11; //0x10 + 1
I2C_CCRL = 0x50; //16M / 100K / 2
I2C_CCRH = 0x00; //标准模式
I2C_CR1 |= 0x01; //使能iic外设
I2C_OARH = 0x40; //七位地址模式
I2C_OARL = 0xa0; //自身地址0xa0
}
读写代码就简单了,针对不同的器件有略微的变化,但通信协议还是标准的IIC。这里就不贴了。因为我觉得最重要的就是初始化的配置。这个没搞好,后面的都是白搞的。