|
前一阵需要实现M4与外接芯片DAC5571的I2C通信,嵌入式也是刚接触,总之是不知道自己怎么开始。现在想想多简单,自己发急救贴也太好笑了。今天尝试解说一下,希望能说明白,更希望能帮助和我一样重新起步的同学!
形象的说,I2C通信就像是你在美团团好了火锅,头一次去,要照着地址去寻找。
本来想上图的,试了下,等级不够。哈,我尽量说明白。M4的I2C模块有现成的进行I2C通信的库函数,M4可做主机,可做从机。既然是有意的通信,自然是双方,这里,外接的DAC5571就是另一方,它将与M4通信。要使用必须配置引脚,其余你们都会,看DAC数据手册知道,前六个是固定的,厂商已经写死了,为100110,下一位,叫设备地址选择端A0,这个可自行配置,你只需要一个芯片的话,取1,取0都可以。若I2C总线上有2个DAC5571,那么A0的意义就体现了:两个芯片依靠地址区分,而地址区分就以A0的取值不同来实现。最后一位是读写配置,以自己需要而定即可。
另一个问题,这个设备地址的写入问题。比如我要由M4向DAC发数据,那么最后一位为0,假设A0也取0,设备地址为10011000,0x98.但是在编程时并不是将这个值写入程序。而是0x4c.读M4相关库函数就知道,内部函数实现里有语句,将这个设备地址右移动一位之后写入寄存器的。注意,有的直接写入,有的会进行移动,所以要多看手册,不要照搬。
|
|