你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

請問有大神用 STM32F103 硬件I2C 做過 CYPRESS MBR3xx Touch 經驗嗎?

[复制链接]
jeffhe1 提问时间:2019-4-24 09:12 /
本帖最后由 jeffhe1 于 2019-4-25 16:51 编辑

最近在做一個專案 , 用到 STM32F103 硬件 I2C 與 CYPRESS MBR3xxx Touch IC 做 touch 功能,
但我一直無法正常工作 , I2C read / write function 在 AT24 EEPROM 是正常工作 , 但與 CYPRESS MBR3xxx
就無法正常工作 , 不知哪位大神有做過類似的經驗 或 有 sample code 可以藉以學習 , 跪求大神幫忙
收藏 评论7 发布时间:2019-4-24 09:12

举报

7个回答
morphlings2014 回答时间:2019-4-24 11:47:29
本帖最后由 morphlings2014 于 2019-4-24 11:50 编辑

应该是IIC地址没有对吧,他默认给的是高7位的,需要移位。我之前有用过他们的CY3280-CapSense-MBR3评估板,当时图方便用的F412G的板卡驱动的,你可以看看。
http://bbs.21ic.com/icview-2533472-1-1.html

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

jeffhe1 回答时间:2019-4-24 13:28:08
morphlings2014 发表于 2019-4-24 11:47
应该是IIC地址没有对吧,他默认给的是高7位的,需要移位。我之前有用过他们的CY3280-CapSense-MBR3评估板, ...

I2C_Send7bitAddress(MPR121_I2Cx, 0x37, I2C_Direction_Transmitter);
用這個 函式 把它改成
I2C_Send7bitAddress(MPR121_I2Cx, 0x6e, I2C_Direction_Transmitter);
這樣對嗎?  我是用V3.5 標準庫 , 沒辦法像大神那樣直接 copy 來用
且還會一直在這出錯  
while(I2C_GetFlagStatus(MPR121_I2Cx, I2C_FLAG_BUSY))
  {
    if((I2CTimeout--) == 0) return I2C_TIMEOUT_UserCallback(9);
   }

寫 EEPROM 就不會出現這種問題

小弟功力實在太差
morphlings2014 回答时间:2019-4-24 13:49:57
jeffhe1 发表于 2019-4-24 13:28
I2C_Send7bitAddress(MPR121_I2Cx, 0x37, I2C_Direction_Transmitter);
用這個 函式 把它改成
I2C_Send7b ...

对,地址是需要左移移位。
IIC初始化之后,复位下触摸芯片,然后再判断这个BUSY标志,F1的硬件IIC是不太好用,老是BUSY锁住,网上有很多这个问题的讨论和解决方法,你可以看下。
MrJiu 回答时间:2019-4-24 14:16:46
我一般不用ST的硬件I2C,贼鸡儿操蛋。。。但是我喜欢用ST模拟I2C。。。贼好用!!!

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

jeffhe1 回答时间:2019-4-24 14:47:52
MrJiu 发表于 2019-4-24 14:16
我一般不用ST的硬件I2C,贼鸡儿操蛋。。。但是我喜欢用ST模拟I2C。。。贼好用!!! ...

我也想用軟件 I2C , 但發現效能是有差異的 , 因為還有其他事件要處理 , 會來不及處理 ,
除非升級到 STM32407 看看
MrJiu 回答时间:2019-4-24 15:11:22
jeffhe1 发表于 2019-4-24 14:47
我也想用軟件 I2C , 但發現效能是有差異的 , 因為還有其他事件要處理 , 會來不及處理 ,
除非升級到 STM3 ...

看自己的需求吧!!!不过除非用数据量非常大,我觉得硬件I2C和软件模拟差距不大!!!
jeffhe1 回答时间:2019-4-24 18:10:10
morphlings2014 发表于 2019-4-24 13:49
对,地址是需要左移移位。
IIC初始化之后,复位下触摸芯片,然后再判断这个BUSY标志,F1的硬件IIC是不太 ...

可是我同樣的函式 , 用在 EEPROM 怎麼不會出現

while(I2C_GetFlagStatus(MPR121_I2Cx, I2C_FLAG_BUSY))
  {
    if((I2CTimeout--) == 0) return I2C_TIMEOUT_UserCallback(9);
   }
這個問題 ?  
是我程式問題 , 還是 CYPRESS MBR3116 不能用正常方式讀寫 , 還是還有其他問題?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版