請問有大神用 STM32F103 硬件I2C 做過 CYPRESS MBR3xx Touch 經驗嗎?
本帖最后由 jeffhe1 于 2019-4-25 16:51 编辑最近在做一個專案 , 用到 STM32F103 硬件 I2C 與 CYPRESS MBR3xxx Touch IC 做 touch 功能,
但我一直無法正常工作 , I2C read / write function 在 AT24 EEPROM 是正常工作 , 但與 CYPRESS MBR3xxx
就無法正常工作 , 不知哪位大神有做過類似的經驗 或 有 sample code 可以藉以學習 , 跪求大神幫忙:'( 本帖最后由 morphlings2014 于 2019-4-24 11:50 编辑
应该是IIC地址没有对吧,他默认给的是高7位的,需要移位。我之前有用过他们的CY3280-CapSense-MBR3评估板,当时图方便用的F412G的板卡驱动的,你可以看看。
http://bbs.21ic.com/icview-2533472-1-1.html 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 就不會出現這種問題 :'(
小弟功力實在太差 :'( jeffhe1 发表于 2019-4-24 13:28
I2C_Send7bitAddress(MPR121_I2Cx, 0x37, I2C_Direction_Transmitter);
用這個 函式 把它改成
I2C_Send7b ...
对,地址是需要左移移位。
IIC初始化之后,复位下触摸芯片,然后再判断这个BUSY标志,F1的硬件IIC是不太好用,老是BUSY锁住,网上有很多这个问题的讨论和解决方法,你可以看下。 我一般不用ST的硬件I2C,贼鸡儿操蛋。。。但是我喜欢用ST模拟I2C。。。贼好用!!!;P;P;P MrJiu 发表于 2019-4-24 14:16
我一般不用ST的硬件I2C,贼鸡儿操蛋。。。但是我喜欢用ST模拟I2C。。。贼好用!!! ...
我也想用軟件 I2C , 但發現效能是有差異的 , 因為還有其他事件要處理 , 會來不及處理 ,
除非升級到 STM32407 看看 :L jeffhe1 发表于 2019-4-24 14:47
我也想用軟件 I2C , 但發現效能是有差異的 , 因為還有其他事件要處理 , 會來不及處理 ,
除非升級到 STM3 ...
看自己的需求吧!!!不过除非用数据量非常大,我觉得硬件I2C和软件模拟差距不大!!! 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 不能用正常方式讀寫 , 還是還有其他問題? :'(
页:
[1]