为了设定SPI或是使用需要使用pid_ioctl函数。SPI支持的pid_ioctl函数的命令目录如下。
命令 | 下级命令 | 说明 | |
---|---|---|---|
set | lsb | 0 | set a bit transmission order: MSB first |
1 | set a bit transmission order: LSB first | ||
data | 8 | set a size of data unit: 8 bits | |
16 | set a size of data unit: 16 bits | ||
div | [N] | set a division: 2/4/8/16/32/64/128/256 | |
mode | [M] | set an SPI mode: 0/1/2/3 | |
get | rxlen | get the number of pending bytes in receive buffer | |
txlen | get the number of pending bytes in send buffer | ||
req | start | request to write data | |
reset | request to reset bus |
SPI通过"set"命令设定通信模式、数据传送顺序、数据传送单位及通信速度。
PHPoC的SPI数据传送顺序可在0或者1中选择,在没有设定数据传送顺序时,基本使用的值是0。0表示自MSB传送。设定方法如下。
区分 | 语法 |
---|---|
MSB > LSB | pid_ioctl($pid, "set lsb 0"); |
LSB > MSB | pid_ioctl($pid, "set lsb 1"); |
PHPoC的SPI数据传送单位可以选择8或是16字节中的一个,基本参数是8。设定方法如下。
区分 | 语法 |
---|---|
8 bits | pid_ioctl($pid, "set data 8"); |
16 bits | pid_ioctl($pid, "set data 16"); |
数据通信速度设定参数为PHPoC的默认时钟分割率,可选择 2 / 4 / 8 / 16 / 32 / 64 / 128 / 256中的一个。基本参数值为256,设定参数如下。
请参考如何设定数据。
区分 | 语法 |
---|---|
1 of N | pid_ioctl($pid, "set div N"); |
※ P4S-341/P4S-342的基本时钟是42MHz。分割率为256时,数据速率约为164Kbps。
SPI模式是在0至3中选择一个设定。基本值是3,设定方法如下。
SPI 模式 | 语法 |
---|---|
mode 0 | pid_ioctl($pid, "set mode 0"); |
mode 1 | pid_ioctl($pid, "set mode 1"); |
mode 2 | pid_ioctl($pid, "set mode 2"); |
mode 3 | pid_ioctl($pid, "set mode 3"); |
SPI通过"get"命令确认各种状态信息。
在SPI中发送或是接收缓冲区的字节数可如下进行确认。
区分 | 语法 |
---|---|
Send buffer | pid_ioctl($pid, "get txlen"); |
Receive buffer | pid_ioctl($pid, "get rxlen"); |
要求发送SPI数据的命令。 在执行此命令前必须利用pid_write函数把需要发送的数据放在缓冲区内。 另外,发送数据后,需要通过pid_read函数读取已发送的数据大小数据。 使用方法如下。
命令 | 语法 |
---|---|
Request to Write Data | pid_ioctl($pid, "req start"); |
当SPI通信不是很流畅时。可通过此命令初始化SPI总线。
命令 | 语法 |
---|---|
Request to Request Bus | pid_ioctl($pid, "req reset"); |