Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1481516
  • 博文数量: 204
  • 博客积分: 4013
  • 博客等级: 中校
  • 技术积分: 4030
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-29 06:34
文章分类

全部博文(204)

文章存档

2012年(204)

分类: C/C++

2012-08-08 20:10:52

 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口模拟就可以

阅读(13936) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~