我在使用CYSteam例程来测速速度的时候一直出现了一个问题,下载固件程序后,在设备管理器中能够看到该驱动已经正常安装了,但是在console或者是官方提供的CYSteam中无法识别。一直以为是驱动的程序的问题。但是我利用购买的开发板就没有这个问题。因此也较难判断是不是驱动的的问题。
后来我在调试数码管显示的时候发现不能显示(我的电路是参考官方的),应该在硬件电路没有问题呢。然后就分析是程序的问题。特别是I2C的问题。于是乎仔细看了PCF8574的文档,发现在I2C操作中的地址会因为芯片型号的不同而不同。如图所示。应该来说为40(41)或者为70(71)但是程序中为#define BTN_ADDR 0x20#define LED_ADDR 0x21。。。。出现差别。通过仔细分析这个芯片的读写时序,发现官方写的时候的没有把最低位的读写标志也加入,而是直接用了函数的方式。 EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));这样正好能解释为什么是20和21.根据这一点,我对地址进行改写,为#define BTN_ADDR 0x38
#define LED_ADDR 0x39。。。通过测试正好能够显示数码管。而CYSteam改动了这一点后也能够正常的被console和官方提供CYSTteamer识别。
总结:由于固件程序中I2C的部分没有与实际的芯片对应而导致无法识别。此外在使用芯片的时候特别要注意芯片的厂家与芯片的尾号。
|