User Tools

Site Tools


spi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
spi [2018/09/13 05:00] midas_zhouspi [2025/10/14 06:22] (current) – external edit 127.0.0.1
Line 5: Line 5:
  
 3.可以在C语言环境下进行spi配置和传输操作, 先打开 /dev/spidev32766.1设备节点, 然后用ioctl()函数来进行操作. 3.可以在C语言环境下进行spi配置和传输操作, 先打开 /dev/spidev32766.1设备节点, 然后用ioctl()函数来进行操作.
-比如: 用 ioctl(fd,SPI_IOC_RD_MODE, &spi_mode) 对spi的读(写)工作模式进行配置,用ioctl(fd,SPI_SPI_IOC_RD_MAX_SPEED_HZ, &spi_speed) 对读(写)时钟频率进行设置,   +比如: 用 ioctl(fd,SPI_IOC_WR_MODE, &spi_mode) 对spi的工作模式进行配置,用ioctl(fd,SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed) 对时钟频率进行设置,   
- 最后用ioctl(fd, SPI_IOC_MESSAGE(2), xfer)函数来发送和接收数据. 由于是半双工方式, 因此xfer[n].rx_buf和xfer[n].tx_buf中只有一个有效, 默认.tx_buf 或.rx_buf 为NULL的那个无效. 每次ioctl进行SPI_IOC_MESSAGE传输操作的发送和接收字段总长不能超过36bytes(这个正好是spi硬件的最大buffer), 比如SPI_IOC_MESSAGE(4)如果是3次有效发送+1次有效接收, 那么这些发送和接收的字段总长不能超过36bytes, 不然ioctl会返回错误.+ 最后用ioctl(fd, SPI_IOC_MESSAGE(n), xfer)函数来发送和接收数据. 由于是半双工方式, 因此xfer[n].rx_buf和xfer[n].tx_buf中只有一个有效, 默认.tx_buf 或.rx_buf 为NULL的那个无效. 每次ioctl进行SPI_IOC_MESSAGE传输操作的发送和接收字段总长不能超过36bytes(这个正好是spi硬件的最大buffer), 比如SPI_IOC_MESSAGE(4)如果是3次有效发送+1次有效接收, 那么这些发送和接收的字段总长不能超过36bytes, 不然ioctl会返回错误.
spi.1536814824.txt.gz · Last modified: (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki