一、SPI做主设备,时钟由主设备给,spi读写函数如下
HL_BYTE SPI_Write_ReadData(HL_DWORD data)
{
HL_DWORD buf;
while (Reset == SPI_GetFlag(SPI_UNIT, SpiFlagSendBufferEmpty))
{
}
/* Send data */
SPI_SendData16(SPI_UNIT, data);
while (Reset == SPI_GetFlag(SPI_UNIT, SpiFlagReceiveBufferFull))
{
}
/* Receive data */
buf = SPI_ReceiveData16(SPI_UNIT);
return buf;
}
二、spi根据时钟和上升沿下降沿读取方式分为四种工作模式 :
模式一:时钟空闲为低、上升沿读取数据
模式二:时钟空闲为低、下降沿读取数据
模式三:时钟空闲为高、上升沿读取数据
模式三:时钟空闲为高、下降沿读取数据
注意:具体需要那种模式得根据从机的芯片手册进行决定
三、spi三线模式和四线模式区别
百度上看三线模式会告诉你只有:mosi、clk、cs,没有miso,但是实际上miso还是有的,在华大单片机hc32f460jcta单片机上没有的是cs脚的配置,虽然没有miso配置,但是实际上读取数据还是从miso脚读取。注意点:三线模式和四线模式需要根据硬件电路进行选中,首先跟硬件确认是三线模式还是四线模式
四、时钟选择
spi的时钟由系统主时钟分频出来,比如说系统时钟是72mhz,spi配置非8分频,那么spi的时钟就是9mhz,
五、硬件spi和软件spi区别
1、硬件spi的速率高、软件偏低
2、硬件spi的io口做了限制,不能随便用io,软件可以随便用io口模拟
3、软件spi的延时比较难把握,需要做到ns级别延时
六、