本帖最后由 神之觉醒 于 2013-9-28 20:34 编辑
SPI收发器,需要时钟输入,最高收发速率为输入时钟的4分频;
SPI的收发速率可以在I/O空间FF05H单元设置,高4位为SPI速率设置,0XH(X为SPI设备片选,后面说明)为最高收发速率,主时钟的4分频,1XH为8分频,2XH为16分频,3XH为32分频。
CPU有直接的位输出控制,BIT0、BIT1、BIT2、BIT3、BIT4、BIT5,可以直接用指令置1置0。
BIT2置0、BIT3置1时SPI的SO输出线始终为1,BIT2置1、BIT3置0时SPI的SO输出线始终为0,BIT2置1、BIT3置1时SPI的SO输出线正常输出数据;
要使用SPI收发器发送数据,先把BIT0置1,SPI收发器为置数状态,然后在I/O空间FF04H地址写入要发送的数据,最后把BIT0置0,SPI收发器为收发状态,再把BIT1置1、置0,启动SPI发送,如果想要知道发送是否完成,可以查询I/O空间FF05H的第6位,为0表示发送完成,如果不用查询,可以自己掌握指令周期估算发送状态,假如SPI的速率为CPU主时钟的4分频,而且本CPU的指令周期为8个时钟,那就是每执行1条指令SPI发送两位,在把BIT1置1(发送开始)、置0后,再经过3条指令即可再次操作SPI ,这3条指令可以放NOP空操作,或是别的神马操作。。要是连续发送数据的话,这是个很好的机会,你可以用SPI忙的这个时间,从内存读出数据到累加器A,这时SPI正好发送完成,又可以继续装数据发送撩~ 效率杠杠的。。。[s:420]
SPI收发器接收数据,BIT0必须是0(SPI收发器为收发状态), 再把BIT1置1、置0,启动SPI接收,和上面一样,查询、估算。。。确定SPI接收状态,然后从I/O空间FF04H地址读出接收到的数据;如果连续接收数据,可以把数据读到累加器A之后马上再次启动SPI接收,然后把累加器A的数据存放好,这时SPI又正好接收完成,效率杠杠杠杠。。。[s:427]
LED是指示SPI收发器上面移位寄存器的数据;
飞线飞线飞线飞线飞线。。。。。