回答

收藏

[评测分享] 【ELF 2学习板】13.SPI通讯测试(1)

#板卡评测 #板卡评测 1227 人阅读 | 0 人回复 | 2025-02-06

拜年任务结束,年也过完了,继续试用ELF2-RK3588开发板。这次测试一下板载的SPI外设接口。SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的通信。SPI接口通常由四根线组成:MOSI(主输出从输入)、MISO(主输入从输出)、SCLK(串行时钟)和SS/CS(从选择/片选)。这种接口允许全双工通信,即在同一个时钟周期内,数据可以在两个方向上同时传输。
SPI的主要特点包括:
高速通信:SPI接口可以实现高速的数据传输,适用于需要快速数据交换的应用场景。
简单接口:SPI的硬件接口相对简单,易于实现。
支持多设备:通过使用不同的片选线(SS/CS),SPI接口可以连接多个外设。
全双工通信:可以在一个时钟周期内同时进行数据的发送和接收,提高了数据传输的效率。
SPI协议常用于连接各种外设,例如存储器、ADC/DAC转换器、传感器等。在实际应用中,SPI协议的时钟频率、数据格式和传输模式可以根据具体需求进行配置。

SPI协议根据时钟极性(CPOL) 和相位(CPHA) 共同决定读取数据的方式,因此一共有4钟模式。

本次首先通过系统工具进行SPI的测试。

spidev是 Linux 内核中用于 SPI(串行外设接口)通信的一个驱动程序,它提供了一个用户空间接口,使得用户可以通过简单的文件操作来进行 SPI 设备的读写操作。spidev主要用于嵌入式系统和开发板中,如 Raspberry Pi、BeagleBone 等,方便开发者在不编写复杂驱动程序的情况下使用 SPI 设备。


使用 spidev 库可以简化 SPI 设备的驱动开发,使得开发者可以专注于应用逻辑的实现。
ELF2-RK3588上,我们可以先看看有哪些SPI外设:


系统提供了spi-tools工具包,该软件包包含一些简单的命令行工具,用于辅助操作Linux下的spidev设备。
spi-config
查询或设置SPI配置(模式、速率、每字节位数等)。

spi-pipe
实现向SPI设备同时发送和接收数据。


例如,查询当前配置,以及修改时钟频率并再次查询:

这样看,似乎配置失败了,可以看到设置的波特率根本没有变化,原因是在ELF2平台上,当文件描述符关闭时,速度会重置为默认值。为了避免此问题,可以使用-w选项保持文件描述符打开。例如:
可以使用printf命令格式化要发送的二进制数据。 例如,发送字节序列0x41、0x42、0x43并查看回复:
最后如果不用了,就杀死后台进程:
通过这种方式,开发者可以在 Linux 系统上方便地进行 SPI 设备的通信操作。

如果是使用Python脚本,以下是使用spidev是进行 SPI 通信的基本步骤:
1. 加载 spidev是模块:
   在 Linux 系统中,需要确保spidev是模块已经加载。可以通过以下命令加载:
   sudo modprobe spidev
2. 打开 SPI 设备:
   在用户空间中,使用 open()函数打开 SPI 设备文件,通常位于 /dev/ 目录下。设备文件名格式为 /dev/spidev<bus>.<device>,其中 <bus> 是总线号,<device> 是设备号。
   import spidev
   spi = spidev.SpiDev()
   spi.open(4, 0)  # 打开 SPI 总线 0 的设备 0

3. 配置 SPI 参数:
   使用 spidev 库可以配置 SPI 的各种参数,包括最大时钟速度、模式、位顺序等。
   spi.max_speed_hz = 500000  # 设置最大时钟速度为 500 kHz
   spi.mode = 0b00            # 设置 SPI 模式为 0
   spi.bits_per_word = 8      # 设置每个字的数据位数为 8

4. 进行数据传输:
   使用 xfer() 或 xfer2() 方法进行数据传输。xfer() 方法在发送和接收数据时会先发送然后接收,而 xfer2() 方法可以在同一时钟周期内同时发送和接收数据。
   to_send = [0x01, 0x02, 0x03]
   received = spi.xfer(to_send)  # 发送数据并接收响应
   print(received)   
5. 关闭 SPI 设备:
   完成通信后,使用 close() 方法关闭 SPI 设备。
   spi.close()

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

5300 积分
55 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条