搜索
bottom↓
回复: 57

STM32 硬件IIC 终极解决方案

  [复制链接]
(284805508)

出0入0汤圆

发表于 2011-10-19 14:49:48 | 显示全部楼层 |阅读模式
刚刚参加 了在济南的STM32 全国研讨会 50%的中奖率下也没抽到那个 渴望已久的STM32F4 的板子,倒是给了个没用的f100的小板。
会上得知两个季度后会有支持 RBG 接口 和SDRAM 的新型号的STM32面世。大家期待吧。


(原文件名:图像023.jpg)


(原文件名:图像028.jpg)


(原文件名:图像029.jpg)


(原文件名:图像031.jpg)
会上有一女应用工程师 姓姚吧提到了,为了规避 飞利浦专利的问题 STM32 的I2C 采用了特殊的硬件设计。所以不同以往,应用起来不太舒服,ST为了解决这个问题 开发了CPAL  
STM32 I2C Communication Peripheral Application Library高级封装了IIC 的硬件收发函数。昨天晚上花点时间折腾好一试果然好用~!若是有哪位朋友对STM32的I2C 失望的不妨一试。另外 STM32 F1 F2 F4 的IP核都是一样的以后肯定能用到的。

哪位有多余STM32F4-DISCOVERY 小弟求一份,这东西真不好买啊........

点击此处下载 ourdev_686371BBYLTQ.zip(文件大小:1.91M) (原文件名:stm32_i2c_cpal.zip)
(284805032)

出0入12汤圆

发表于 2011-10-19 14:57:44 | 显示全部楼层
看到STM32的IIC,蛋疼啊
(284803718)

出0入0汤圆

发表于 2011-10-19 15:19:38 | 显示全部楼层
怎么每个地方的研讨会的内容都不一样啊??
(284803290)

出0入0汤圆

发表于 2011-10-19 15:26:46 | 显示全部楼层
支持RGB和SDRAM这个不错。
(284802680)

出0入0汤圆

发表于 2011-10-19 15:36:56 | 显示全部楼层
回复【3楼】avrgogo
-----------------------------------------------------------------------

支持,终于看到更高级点的功能了
(284802638)

出0入0汤圆

发表于 2011-10-19 15:37:38 | 显示全部楼层
RGB和SDRAM看着都流口水
(284799751)

出0入0汤圆

发表于 2011-10-19 16:25:45 | 显示全部楼层
马上来杭州咯
(284799174)

出0入0汤圆

发表于 2011-10-19 16:35:22 | 显示全部楼层
回复【6楼】clever0725  
-----------------------------------------------------------------------
我也在济南,那天公司上班没去,qq:506064082,咱们可以聊聊,呵呵
(284795027)

出0入0汤圆

 楼主| 发表于 2011-10-19 17:44:29 | 显示全部楼层
通信外设应用级库函数 给个这个东东的手册 其实用处不大 自己看看库里带的历程 很快就上手了
我是青岛的 大四了 QQ:357017598
(Communication peripheral application library (CPAL))
UM1029
STM32 通信外设应用级库函数ourdev_686453T17SS2.pdf(文件大小:548K) (原文件名:CD00291090.pdf)
(284792053)

出0入0汤圆

发表于 2011-10-19 18:34:03 | 显示全部楼层
哎,今天没时间去~
(284596145)

出0入0汤圆

发表于 2011-10-22 00:59:11 | 显示全部楼层
先试试
(284522746)

出0入0汤圆

发表于 2011-10-22 21:22:30 | 显示全部楼层
关注
(284515414)

出0入0汤圆

发表于 2011-10-22 23:24:42 | 显示全部楼层
mark
(284514378)

出0入0汤圆

发表于 2011-10-22 23:41:58 | 显示全部楼层
看了一下,DMA模式,中断优先级最高,说明STM32的IIC的毛病并没有解决。
(284507515)

出0入0汤圆

 楼主| 发表于 2011-10-23 01:36:21 | 显示全部楼层
回复【13楼】i55x  
-----------------------------------------------------------------------

F1 F2 F4 的I2C IP核都是一样的,但是 F2后不在有 F1的中断局限性,这个CPAL更多是方便使用,包裹的好。那种组合的标志位自己来写实在麻烦。目前还没受到过I2C中断的困扰问题。
(284298012)

出0入0汤圆

发表于 2011-10-25 11:48:04 | 显示全部楼层
飘过...
(283910428)

出0入0汤圆

发表于 2011-10-29 23:27:48 | 显示全部楼层
dev是不是应该把单个文件大小限制搞大些
(283909868)

出0入0汤圆

发表于 2011-10-29 23:37:08 | 显示全部楼层
回复【13楼】i55x
看了一下,dma模式,中断优先级最高,说明stm32的iic的毛病并没有解决。
-----------------------------------------------------------------------
(280584489)

出0入0汤圆

发表于 2011-12-7 11:20:07 | 显示全部楼层
mark
(280583906)

出0入0汤圆

发表于 2011-12-7 11:29:50 | 显示全部楼层
看到中断优先级最高,就知道没有用的东东
(280576154)

出0入0汤圆

发表于 2011-12-7 13:39:02 | 显示全部楼层
mark
(280563927)

出0入0汤圆

发表于 2011-12-7 17:02:49 | 显示全部楼层
库函数的,用不惯啊,IIC,一直都是自己模拟的。。。
(269921276)

出0入0汤圆

发表于 2012-4-8 21:20:20 | 显示全部楼层
能请大侠帮我解答下为什么写函数没有应答呢?劳烦您看下我下面的问号?
疑虑一 I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; //设置是否开启ACK响应
       /*允许1字节1应答模式*/  
       I2C_AcknowledgeConfig(I2C1, ENABLE);              //使能I2C接口响应
       以上这两句话C语言是不是软件来开启I2C1的应答功能?第二句话注释:允许一字节一应答模式,那为什么在下面的写页函数没有见到应答呢????
      **函数名:I2C_PageWrite_24C
        **功能:写入一页(以内)
        **注意事项:此函数供群写入调用
*************************************************/
void I2C_PageWrite_24C(u8 addr,u8* pBuffer, u8 no)
{
        while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));                          //等待总线空闲

        /*起始位*/
        I2C_GenerateSTART(I2C1, ENABLE);
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));

#ifdef AT24C01A
        /*器件地址(写)*/                  
        I2C_Send7bitAddress(I2C1, EEPROM_ADDR, I2C_Direction_Transmitter);  ??本来这句话后面不是应该有应答的吗?
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
        
        /*写地址值*/
        I2C_SendData(I2C1, addr);                         ??这句话后面不是也应该有应答的吗?
        while(! I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

#else
        I2C_Send7bitAddress(I2C1, addr<<1, I2C_Direction_Transmitter);
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
#endif
        while(no--)  
        {
          I2C_SendData(I2C1, *pBuffer);   ??发送一个字节的数据不是也应该有一个应答吗?
          pBuffer++;
          while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
        }
        
        /*停止位*/
        I2C_GenerateSTOP(I2C1, ENABLE);
}
(266590255)

出0入0汤圆

发表于 2012-5-17 10:37:21 | 显示全部楼层
十分蛋疼,好难用啊
(258804231)

出0入0汤圆

发表于 2012-8-15 13:24:25 | 显示全部楼层
普遍反应IIC有问题
(257141174)

出0入0汤圆

发表于 2012-9-3 19:22:02 | 显示全部楼层
mark



(239362800)

出0入0汤圆

发表于 2013-3-28 13:48:16 | 显示全部楼层
stm32的硬件iic不好用吗?怎么大多数人多事用模拟的呢?
(238903018)

出0入0汤圆

发表于 2013-4-2 21:31:18 | 显示全部楼层
stm32 的iic到底怎么回事啊
比一般的好像有点问题啊(个人感觉)程序里只有一个IIC的程序就好使
加了别的初始化函数IIC就死在循环里了
到底怎么回事啊
(238231374)

出0入0汤圆

发表于 2013-4-10 16:05:22 | 显示全部楼层
希望能解决我的问题
(235530845)

出0入0汤圆

发表于 2013-5-11 22:14:11 | 显示全部楼层
额,还没用过,看看!
(226679167)

出0入0汤圆

发表于 2013-8-22 09:02:09 | 显示全部楼层
表示只用模拟 想怎么用就怎么用, 妈妈再也不用担心读写失败了~~~
(226677368)

出0入0汤圆

发表于 2013-8-22 09:32:08 | 显示全部楼层
好,mark 一个
(214537333)

出0入0汤圆

发表于 2014-1-9 21:46:03 | 显示全部楼层
本来还想学的,这下只好用我的模拟了,话说我的模拟也写得不错
(199010665)

出0入0汤圆

发表于 2014-7-8 14:43:51 | 显示全部楼层
准备试试呢。不知道STM32做从机怎么样?
(196088721)

出0入0汤圆

发表于 2014-8-11 10:22:55 | 显示全部楼层
哇。。。楼主确定这个硬件II才
(195991080)

出0入0汤圆

发表于 2014-8-12 13:30:16 | 显示全部楼层
怪不得好多人都在蛋疼~
(195871941)

出0入0汤圆

发表于 2014-8-13 22:35:55 | 显示全部楼层

库函数的,用不惯啊,IIC,一直都是自己模拟的。。。
(194861104)

出0入0汤圆

发表于 2014-8-25 15:23:12 | 显示全部楼层
标记,STM32 硬件IIC 终极解决方案
(193301369)

出0入0汤圆

发表于 2014-9-12 16:38:47 | 显示全部楼层
还在用模拟IIC
(193212755)

出0入10汤圆

发表于 2014-9-13 17:15:41 | 显示全部楼层
终于知道STM32的I2C蛋疼的原因了。。。。。。
(192586281)

出0入0汤圆

发表于 2014-9-20 23:16:55 | 显示全部楼层
不错,收藏一下……
(192204004)

出0入0汤圆

发表于 2014-9-25 09:28:12 | 显示全部楼层
了解一下!!!
(192101026)

出0入0汤圆

发表于 2014-9-26 14:04:30 来自手机 | 显示全部楼层
谢谢分享!
(192096338)

出0入0汤圆

发表于 2014-9-26 15:22:38 | 显示全部楼层
正在蛋疼这个,试试看看
(192095849)

出0入0汤圆

发表于 2014-9-26 15:30:47 | 显示全部楼层
真的能很好解决吗?有谁试过这份程序呢?
(187450593)

出0入0汤圆

发表于 2014-11-19 09:51:43 | 显示全部楼层
正为stm32 的IIC  蛋疼中。。。
(187440273)

出0入0汤圆

发表于 2014-11-19 12:43:43 | 显示全部楼层
iic  st应该是没有付专利费用,自己设计的iic
(187340688)

出0入0汤圆

发表于 2014-11-20 16:23:28 | 显示全部楼层
学习了,谢谢楼主!
(187335960)

出0入0汤圆

发表于 2014-11-20 17:42:16 | 显示全部楼层
多谢分享。
(187320645)

出0入0汤圆

发表于 2014-11-20 21:57:31 | 显示全部楼层
前段时间正好一个项目,尝试了硬件I2C,真是被坑死了
换成模拟的果断解决
对库不怎么了解得情况下
慎用
(186050346)

出0入0汤圆

发表于 2014-12-5 14:49:10 | 显示全部楼层
用这个库看看,
(143258693)

出0入0汤圆

发表于 2016-4-13 21:23:23 | 显示全部楼层
支持RGB和SDRAM
(143256585)

出0入0汤圆

发表于 2016-4-13 21:58:31 | 显示全部楼层
为了规避飞利浦的专利,每家芯片厂的MCU,I2C接口的名字都不一样。

其实,I2C接口速度比较慢,用IO口软件模拟更方便。
(143252095)

出0入0汤圆

发表于 2016-4-13 23:13:21 | 显示全部楼层
专利问题是双刃剑
(143217956)

出0入0汤圆

发表于 2016-4-14 08:42:20 | 显示全部楼层
在Q3出G4和L4
(142310010)

出0入0汤圆

发表于 2016-4-24 20:54:46 | 显示全部楼层
不知道适合所有的stm32不呢
(49390086)

出0入0汤圆

发表于 2019-4-5 08:00:10 | 显示全部楼层
不是说 IIC 的专利到期了? 可以免费用了,STM 最近版这个IIC的硬件问题没有了?
(32945651)

出10入10汤圆

发表于 2019-10-12 15:54:05 | 显示全部楼层
debug模式可以用,到release模式就不灵了,这ST的IIC真是鬼一样
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-10-27 23:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表