本帖最后由 jeffhe1 于 2019-4-25 16:51 编辑 最近在做一個專案 , 用到 STM32F103 硬件 I2C 與 CYPRESS MBR3xxx Touch IC 做 touch 功能, 但我一直無法正常工作 , I2C read / write function 在 AT24 EEPROM 是正常工作 , 但與 CYPRESS MBR3xxx 就無法正常工作 , 不知哪位大神有做過類似的經驗 或 有 sample code 可以藉以學習 , 跪求大神幫忙 |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
应该是IIC地址没有对吧,他默认给的是高7位的,需要移位。我之前有用过他们的CY3280-CapSense-MBR3评估板,当时图方便用的F412G的板卡驱动的,你可以看看。
http://bbs.21ic.com/icview-2533472-1-1.html
评分
查看全部评分
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 就不會出現這種問題
小弟功力實在太差
对,地址是需要左移移位。
IIC初始化之后,复位下触摸芯片,然后再判断这个BUSY标志,F1的硬件IIC是不太好用,老是BUSY锁住,网上有很多这个问题的讨论和解决方法,你可以看下。
评分
查看全部评分
我也想用軟件 I2C , 但發現效能是有差異的 , 因為還有其他事件要處理 , 會來不及處理 ,
除非升級到 STM32407 看看
看自己的需求吧!!!不过除非用数据量非常大,我觉得硬件I2C和软件模拟差距不大!!!
可是我同樣的函式 , 用在 EEPROM 怎麼不會出現
while(I2C_GetFlagStatus(MPR121_I2Cx, I2C_FLAG_BUSY))
{
if((I2CTimeout--) == 0) return I2C_TIMEOUT_UserCallback(9);
}
這個問題 ?
是我程式問題 , 還是 CYPRESS MBR3116 不能用正常方式讀寫 , 還是還有其他問題?