可否用I/O口模拟SPI?
马老师:请问能不能用AVR的I/O口模拟SPI方式和外围芯片通信?须注意哪些问题?谢谢。 可以。
要按SPI的规范去做。
SPI/I2C/UART等等都可以用普通I/O口去模拟的。 谢谢。只是不同的公司的SPI协议之间是否可以兼容?比如MOROTOLA的SPI要用14Mhz传输,那如何用AVR的I/O口模拟? I/O模拟当然可以,但建议使用AVR的SPI接口,比使用I/O口模拟方便,而且效率提高。
不管你使用什么方法,你必须首先了解和学习SPI协议的本身。从你问的问题来看,你对SPI的协议没有很好的了解。所以你应该先踏踏实实的学习SPI协议。 好的,谢谢马老师。 但是马老师,用AVR的SPI接口和外围芯片通讯,在下载程序到FLASH中时,不是不会对外围芯片产生干扰呢? SPI接口的外围芯片右边都有CS' pin,要外接电阻拉高。 AVR的I/O口有上拉电阻,可以设置成上拉有效,不用外接电阻拉高了吧 ? megal:
下载时 MCU复位了,如何上拉? 问题不在于外部上拉电阻。要看外围的SPI芯片的SPI接口协议。比如讲,一旦有SPI的CLOCK时,外接的SPI芯片就会输出数据,就会造成程序下载的失败。 这是一块10位的DAC芯片:TLC5615,电压输出0-4.096v;datasheet上面介绍的SPI协议比较简略,只给出了时序,详细资料请见:
点击此处打开armok0148247.pdf 我们已经用I/O口模拟解决了问题。因为5615是10位的,所以不能用AVR的SPI,因为是8位或16位的,谢谢马老师的指点。 请问M16的SPI在主机模式中,如何读外部SPI器件的数据? 首先祝贺12楼用I/O模拟成功。但使用AVR的SPI硬件应该也是可以的,读2次就能读进10位的,只是注意SS口需要自己控制。 mark mark
页:
[1]