打印

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

[复制链接]
楼主: lut1lut
手机看帖
扫描二维码
随时随地手机跟帖
81
jjjkkk00| | 2013-10-19 16:12 | 只看该作者 回帖奖励 |倒序浏览
jackzmh 发表于 2013-10-16 11:53
I2C看来不大好用啊

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

以前STM32F10x的I2C太繁琐了,还有很多bug,看着勘误手册发呆。

使用特权

评论回复
82
trumpxp| | 2013-10-19 19:53 | 只看该作者
谢谢了  楼主  比较有意思  需要好好玩玩   有时间  需要消化消化

使用特权

评论回复
83
sweatsurrender| | 2014-4-26 17:49 | 只看该作者
这真是个好贴呀,不收藏都可惜了!

使用特权

评论回复
84
yuyi1005| | 2014-5-14 20:51 | 只看该作者
我试了 中断 和 DMA,都是同一个问题,第一次读或写,就在while(i2c_comm_state != 0);这句卡死,i2c_comm_state = COMM_PRE。试了写24c02,和mpu6050,都是一样的问题。又试了I2C1,I2C2,REMAP,也都是一样的问题。I2C这个程序又比较复杂,实在是不知道怎么改才行哎

使用特权

评论回复
85
yang4469| | 2014-10-18 17:32 | 只看该作者
f1的I2C让我深深的醉了,在一个usb应用里面,总是发生一些数据或者地址错位

使用特权

评论回复
86
huangyanga| | 2015-3-19 11:19 | 只看该作者
谢谢各位大神

使用特权

评论回复
87
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

使用特权

评论回复
88
hxhaawt| | 2015-11-9 23:52 | 只看该作者
想问下楼主 I2C2 DMA 从机 的程序具体怎么用,不是用作存储芯片的,是用来和芯片通信的,具体不太了解啊,怎么知道接收了多少数据

使用特权

评论回复
89
醉卧红尘| | 2016-8-12 16:05 | 只看该作者
经常busy                  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则