megelzw 发表于 2005-5-1 23:46:27

可否用I/O口模拟SPI?

马老师:

    请问能不能用AVR的I/O口模拟SPI方式和外围芯片通信?须注意哪些问题?谢谢。

HJJourAVR 发表于 2005-5-2 01:03:25

可以。

要按SPI的规范去做。



SPI/I2C/UART等等都可以用普通I/O口去模拟的。

megal 发表于 2005-5-2 14:22:11

谢谢。只是不同的公司的SPI协议之间是否可以兼容?比如MOROTOLA的SPI要用14Mhz传输,那如何用AVR的I/O口模拟?

machao 发表于 2005-5-2 15:28:59

I/O模拟当然可以,但建议使用AVR的SPI接口,比使用I/O口模拟方便,而且效率提高。

不管你使用什么方法,你必须首先了解和学习SPI协议的本身。从你问的问题来看,你对SPI的协议没有很好的了解。所以你应该先踏踏实实的学习SPI协议。

megelzw 发表于 2005-5-4 15:03:24

好的,谢谢马老师。

megelzw 发表于 2005-5-4 15:11:59

但是马老师,用AVR的SPI接口和外围芯片通讯,在下载程序到FLASH中时,不是不会对外围芯片产生干扰呢?

testcode 发表于 2005-5-5 00:34:21

SPI接口的外围芯片右边都有CS' pin,要外接电阻拉高。

megal 发表于 2005-5-8 10:14:10

AVR的I/O口有上拉电阻,可以设置成上拉有效,不用外接电阻拉高了吧 ?

HJJourAVR 发表于 2005-5-8 10:33:12

megal:

下载时 MCU复位了,如何上拉?

machao 发表于 2005-5-8 12:36:03

问题不在于外部上拉电阻。要看外围的SPI芯片的SPI接口协议。比如讲,一旦有SPI的CLOCK时,外接的SPI芯片就会输出数据,就会造成程序下载的失败。

megal 发表于 2005-5-8 15:24:41

这是一块10位的DAC芯片:TLC5615,电压输出0-4.096v;datasheet上面介绍的SPI协议比较简略,只给出了时序,详细资料请见:

点击此处打开armok0148247.pdf

megelzw 发表于 2005-5-29 11:06:38

我们已经用I/O口模拟解决了问题。因为5615是10位的,所以不能用AVR的SPI,因为是8位或16位的,谢谢马老师的指点。

sdlythy 发表于 2005-6-16 23:25:32

请问M16的SPI在主机模式中,如何读外部SPI器件的数据?

machao 发表于 2005-6-17 01:12:38

首先祝贺12楼用I/O模拟成功。但使用AVR的SPI硬件应该也是可以的,读2次就能读进10位的,只是注意SS口需要自己控制。

xhhbaby 发表于 2012-8-29 16:29:22

mark mark
页: [1]
查看完整版本: 可否用I/O口模拟SPI?