系统工作情况:AVR单片机用TWI写数据到24CX后,在计算机使用CH341的SCL,SDA读出24CX数据。 如果分别接,即只把AVR与24CX相连,AVR写数据到24CX没问题; 或24CX断开与AVR的连接,只用计算机经CH341读24CX数据没问题。 但如果AVR、24CX、CH341、计算机连在一起,仍用上面使用的程序,即上位机程序用CH341OpenDevice()可以读到设备,但在用CH341ReadEEPROM()读不出数据。 一开始我怀疑是不是在I2C仲裁的问题,即两路的SCL时钟不匹配,但后一查,TWI设置也是用56K,与API使用说明中CH341ReadEEPROM()这个函数也使用56K,这样一来应该说就不成问题。 不知为何,请高手们指教!谢谢大家!
查看: 2525
回复: 3
AVR的TWI与24系列E2与CH341的I2C一起使用的问题[求助]
annasummer
发表于: 2009-06-08 11:34:00
热门产品 :
CH339: 7端口多功能USB HUB控制器芯片
即使时钟匹配也会产生仲裁问题,按照你的描述,问题很可能就是因为系统中有个多个主机,出现多主竞争
annasummer
发表于: 2009-06-08 12:05:00
我用示波器看了一下,上位机还未发CH341ReadEEPROM()命令时,SCL高,SDA低,而上位机调用CH341ReadEEPROM()命令后,SCL有一长串方波,而SDA始终是低。
另外,单片机写数据和上位机读数据是分开使用的。我刚又把AVR、24CX、CH341、计算机连在一起,不做写操作,只有上位机读数据,读出来的都是0。
且单片机操作I2C完后,都有对TWCR的TWSTO置位。
请问楼上高手,我应如何解决多主竞争的问题。
annasummer
发表于: 2009-06-09 14:44:00
一方是AVR的TWI,一方是封装的CH341的API,请各位高手指教!
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录