STM32F103之IO口模拟IIC.rar 本例展示了如何利用I2C软件库和关联的I2C EEPROM驱动来实现与M24C02 EEPROM的数据交换。
在对EEPROM进行写操作的时候,将I2C1设置为主发送端(Master transmitter),而在读操作的时候,则设置为主接收端(Master receiver)。在文件I2c_ee.c中,将EEPROM的地址定义为0xA0。传输时钟默认为400KHz,也可以在文件I2c_ee.c重新定义。另外,由于板上EEPROM为M24C02而非M24C08,因此在I2c_ee.c需把I2C_Pagesize由16改为4。对于STM3210B-LK1板,由于板上EEPROM的片选管脚都接地,因此在文件I2c_ee.h中只能选择定义EEPROM_Block0_ADDRESS为0xA0。
运行程序,首先,第一次读写把Tx1_Buffer中的数据写入EEPROM_WriteAddress1,再把数据从中读出存入Rx1_Buffer,比较Tx1_Buffer和Rx1_Buffer来检验读写是否正确。然后把EEPROM设为待命状态(Standby State)。再进行第二次读写把Tx2_Buffer中的数据写入EEPROM_WriteAddress2,再把数据从中读出存入Rx2_Buffer,比较Tx2_Buffer和Rx2_Buffer来检验第二次读写是否正确。最后,把2次写入的数据一起读出,存入Rx_Buffer中。
STM32 I2C给的程序在全速运行可以,单步运行会死在EV6的判断处,无奈用IO口模拟就可以
阅读(2596) | 评论(0) | 转发(0) |