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

請問有大神用 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个回答
chrome777 回答时间: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 就不會出現這種問題

小弟功力實在太差
chrome777 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版