用PIC单片机带PCF8574的奇怪问题
作者:admin 日期:2009-05-25
这阵子做了块板子,用来做协议转换器,原来也做过,只不过由于我们平台转换到PIC了,所以这次用PIC单片机来做。不过问题也来了~~
由于PIC普遍IO比较少(相对于C8051F系列来说),所以用了2片8574来做扩展,8574用的是I2C总线协议,我用的PIC的PICC编译器,它里面有现成的I2C函数,我调用后,返回的值始终是FF,跟了一下总线发数以后,器件没有返回响应包...于是调时序,加延时,就差我那大顶了。。。
郁闷了2天,今天上来就看看器件是不是好的,于是测了一下中断(我只用了8574的输入模式,而且没有使用中断,所以中断管脚没有连接),中断是好的,看来器件没有问题。于是实在无奈,把单片机的倍频关了(我用的18系列,一般都可以使用4倍频),这时候在测,居然有数据了。。。晕倒...这样看来器件没有问题,线路没有问题,但是我必须使用4倍频的模式,因为单片机上还要做以太网,10M的主频肯定不够。。。怎么办??
架上示波器,看看波形吧,对比了一下,好像正常的时候I2C的时钟信号开头比较陡,别的就啥区别了,死马当活马医吧,于是在SCL管脚上对地并了一个20P的电容...好使!
看来就是这个闹得了,看来是8574没有正确识别总线上的数据流。
........................
不过同样的板上还有片FM24C64就没这问题,难道和芯片的速度有关系,有工夫在做做实验吧!!
注:FM24C64 速度为1M PCF8574速度为100K
由于PIC普遍IO比较少(相对于C8051F系列来说),所以用了2片8574来做扩展,8574用的是I2C总线协议,我用的PIC的PICC编译器,它里面有现成的I2C函数,我调用后,返回的值始终是FF,跟了一下总线发数以后,器件没有返回响应包...于是调时序,加延时,就差我那大顶了。。。
郁闷了2天,今天上来就看看器件是不是好的,于是测了一下中断(我只用了8574的输入模式,而且没有使用中断,所以中断管脚没有连接),中断是好的,看来器件没有问题。于是实在无奈,把单片机的倍频关了(我用的18系列,一般都可以使用4倍频),这时候在测,居然有数据了。。。晕倒...这样看来器件没有问题,线路没有问题,但是我必须使用4倍频的模式,因为单片机上还要做以太网,10M的主频肯定不够。。。怎么办??
架上示波器,看看波形吧,对比了一下,好像正常的时候I2C的时钟信号开头比较陡,别的就啥区别了,死马当活马医吧,于是在SCL管脚上对地并了一个20P的电容...好使!
看来就是这个闹得了,看来是8574没有正确识别总线上的数据流。
........................
不过同样的板上还有片FM24C64就没这问题,难道和芯片的速度有关系,有工夫在做做实验吧!!
注:FM24C64 速度为1M PCF8574速度为100K
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇

文章来自:
Tags:
相关日志: