STM32 I2C 封装库(查询方式+29楼中断方式+32楼DMA方式)

[复制链接]
40516|88
jjjkkk00 发表于 2013-10-19 16:12 | 显示全部楼层
jackzmh 发表于 2013-10-16 11:53
I2C看来不大好用啊

I2C用 STM32F051x的,这个版本的芯片I2C重新换掉了,比较方便。

以前STM32F10x的I2C太繁琐了,还有很多bug,看着勘误手册发呆。
trumpxp 发表于 2013-10-19 19:53 | 显示全部楼层
谢谢了  楼主  比较有意思  需要好好玩玩   有时间  需要消化消化
sweatsurrender 发表于 2014-4-26 17:49 | 显示全部楼层
这真是个好贴呀,不收藏都可惜了!
yuyi1005 发表于 2014-5-14 20:51 | 显示全部楼层
我试了 中断 和 DMA,都是同一个问题,第一次读或写,就在while(i2c_comm_state != 0);这句卡死,i2c_comm_state = COMM_PRE。试了写24c02,和mpu6050,都是一样的问题。又试了I2C1,I2C2,REMAP,也都是一样的问题。I2C这个程序又比较复杂,实在是不知道怎么改才行哎
yang4469 发表于 2014-10-18 17:32 | 显示全部楼层
f1的I2C让我深深的醉了,在一个usb应用里面,总是发生一些数据或者地址错位
huangyanga 发表于 2015-3-19 11:19 | 显示全部楼层
谢谢各位大神
hxhaawt 发表于 2015-11-9 23:47 | 显示全部楼层
本帖最后由 hxhaawt 于 2015-11-9 23:48 编辑

我用了下I2C1 DMA 主机来测试 24C02,简单的测试 ,没有问题
  I2C_Comm_MasterSend(I2C1, 0xa0, 0, Tx1_Buffer, 8);
  while(i2c_comm_state != COMM_DONE);
  
  I2C_Comm_MasterReceive(I2C1, 0xa0, 0, Rx1_Buffer, 8);
  while(i2c_comm_state != COMM_DONE);
程序中要修改DMA1_Channel7_IRQn为对应的库版本即可,其他都没有改变。我用的芯片为:STM32F103ZET6
hxhaawt 发表于 2015-11-9 23:52 | 显示全部楼层
想问下楼主 I2C2 DMA 从机 的程序具体怎么用,不是用作存储芯片的,是用来和芯片通信的,具体不太了解啊,怎么知道接收了多少数据
醉卧红尘 发表于 2016-8-12 16:05 | 显示全部楼层
经常busy                  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部