树莓派系列教程18:SPI

一、 开启树莓派spi功能

1sudo raspi-config


选择 Advanced Options  -> SPI -> yes 启动SPI内核驱动

 运行lsmod命令,可以看到spi模块已启动


/dev路径下面,我们可以发现两个spi设备


spi管脚如下如所有,左边方框的管脚分别为MOSI MISO SCLK,左边CE0,CE1为两个片选管脚,分别对应上图中的spidev0.0,spidev0.1两个设备。对这两个文件读写操作即可控制spi设备。

二、SPI编程

Pioneer 600扩展板配备一款0.96inch,128864分辨率的oled显示屏,通过SPI控制,先上显示效果图。由于程序过长,在这里我就不把代码全部贴出来了,只是简单讲解一下spi的操作函数。如果各位有兴趣可以下载程序,研究一下。如果程序有什么写得不好的地方,还望各位指正。

1、bcm2835

1bcm2835_spi_begin();          //启动spi接口,设置spi对应管脚为复用功能
2bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);     //高位先传输
3bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);       //spi模式0    
4bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_128);  //分频,
5bcm2835_spi_chipSelect(BCM2835_SPI_CS0);                //设置片选                 
6bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);    //设置片选低电平有效
1uint8_t  bcm2835_spi_transfer(uint_t value) 传输一个字节
2void bcm2835_spi_transfernb(char *tbuf,char *rbuf,uint32_t len) 传输n字节

2、python

安装spi

https://pypi.python.org/pypi/spidev/3.1

下载spidev库,复制到树莓派,并行运行如下命令解压安装

1tar –zxvf  spidev-3.1.tar.gz
2cd spidev
3sudo python setup.py install

安装imaging

1sudo apt-get install python-imaging

python-spidev的使用方法:

1import spidev

导入库

1bus=0
2device=0
3spi=SPI.SpiDev(bus,device)

打开spi设备,此处设备为/dev/spi-decv0.0

1spi.readbytes(n)

SPI设备读取n字节

1spi.writebytes(list of value)

将列表的数据写到SPI设备

1spi.xfer(list of values[, speed_hz, delay_usec, bits_per_word])

执行SPI传输。

TAG: Milk-V NVIDIA Jetson Orin Nano/NX PoE供电RJ45以太网迷你扩展板 Milk-V Duo ESP32 S3 800x480 数据手册 树莓派Pico Sipeed NanoCluster迷你集群板 数据中心 集群电脑 树莓派CM45 LM3H M4N 树莓派5/4B UPS带PD快充诱导输出激活Type C不间断电源9600mAh 5V/5A 25W 充电宝 也支持手机/平板/迷你PC电脑等 Milk-V Duo S 512MB SG2000 RISC-V linux 芯片数据手册 CH340 DeepSeek豆包ESP32-AI小智教程 热成像摄像头 高精度360°磁编码伺服电机120KG.CM RS485高精度大扭矩 数据手册 树莓派PICO 7寸显示屏 ESP32 S3开发板1.85寸 虾哥小智AI音箱DeepSeek人工智能语音聊天机器人盒子N16R8 树莓派10.1寸DSI显示屏LCD 800x1280支持RK3576/RK3506/ESP32-P4 lilygo ESP32-P4智能86盒子TV开发板4寸显示触摸屏RS485继电器摄像头网口 树莓派2.13寸电子墨水屏e-paper宠物Pwnagotchi旭日派Jetson Nano