AVR的SPI接口很多只有一个,如果驱动较多的以SPI接口的外设时就必须通过IO来模拟,实际上对于低速外设来说IO模拟的方式也很方便,网上关于模拟SPI的程序很多,我的程序是基于GCCAVR来写的,其他编译器的都类似,写的时候我尽量做到规范和方便后期使用时改动调整。
使用时需要注意以下几点:
1、根据外设的时序要求,区分是在上升沿更新数据还是下降沿。
2、发送数据时高位在前还是地位在前。
3、外设对SPI通信有无速度要求,有些时候过快的通信速率可能无法读取和写入数据
4、CLK,数据等引脚的平时电平
上面几点只要对照着外设的时序图一眼就能弄清楚,程序里面写的很清楚相应的改动一下就可以了。
程序如下: