专栏中心

EEPW首页 > 专栏 > Controlling an SPI device with the Raspberry Pi

Controlling an SPI device with the Raspberry Pi

发布人:电子禅石 时间:2019-11-26 来源:工程师 发布文章

The Raspberry Pi has a Broadcom BCM 2835 chip allowing it to interface with SPI devices on its GPIO pins. There are two chip select pins meaning that the Pi can control two devices simultaneously.



19MOSI – master output slave input
21MISO – master input slave output
23SCLK – clock
24CE0 – chip enable 0
26CE1 – chip enable 1

Step 1: Enable SPI on the Raspberry Pi

  1. In your Pi’s terminal, run

    sudo raspi-config
  2. Go to Advanced Options > SPI

  3. Choose “Yes” for both questions then select Finish to exit raspi-config

  4. Either reboot your Pi or run this command to load the kernel module

    sudo modprobe spi-bcm2708

Step 2: Install spidev

Spidev is a python module that allows us to interface with the Pi’s SPI bus.Watch movie online The Transporter Refueled (2015)

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev python3-dev
cd ~git clone https://github.com/doceme/py-spidev.gitcd py-spidev
make
sudo make install

Step 3: Python script

Finally, we can write and run a python script to control the SPI device.

  1. Create a file called spi-test.py in your favorite editor

    #!/usr/bin/pythonimport spidevimport time
    
    spi = spidev.SpiDev()spi.open(0, 0)spi.max_speed_hz = 7629# Split an integer input into a two byte array to send via SPIdef write_pot(input):
        msb = input >> 8
        lsb = input & 0xFF
        spi.xfer([msb, lsb])# Repeatedly switch a MCP4151 digital pot off then onwhile True:
        write_pot(0x1FF)
        time.sleep(0.5)
        write_pot(0x00)
        time.sleep(0.5)
  2. Make the file executable and run it

    chmod +x spi-test.py
    sudo ./spi-test.py

Notes on spidev

Unless the spi.max_speed_hz field is a value accepted by the driver, the script will fail when you run it. The field can be set to these values on the raspberry pi:



125.0 MHz125000000
62.5 MHz62500000
31.2 MHz31200000
15.6 MHz15600000
7.8 MHz7800000
3.9 MHz3900000
1953 kHz1953000
976 kHz976000
488 kHz488000
244 kHz244000
122 kHz122000
61 kHz61000
30.5 kHz30500
15.2 kHz15200
7629 Hz7629

Two SPI devices can be controlled in python by creating two SpiDev objects, one for each device.

spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 976000
spi2 = spidev.SpiDev()
spi2.open(0, 1)
spi2.max_speed_hz = 976000

https://www.takaitra.com/spi-device-raspberry-pi/

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

ISL55210子评估板的介绍

视频 2011-10-17

Pickering推出行业极具定制性的高压舌簧继电器600系列

6TOPS算力驱动30亿参数LLM,米尔RK3576部署端侧多模态多轮对话

印度半导体野心勃勃:联手东京电子能否改变芯片竞争格局?

2025-09-04

三星计划在 Galaxy S26 机型中使用 Exynos 2600,减少对高通的依赖

嵌入式电子的复杂世界:独立生态系统的分层迷宫

Intersil Zilker Labs电源导航软件

视频 2011-10-17

ZL9101M数字电源模块简介

视频 2011-10-17

英伟达表示,尽管詹森在财报电话会议中暗示了相反的情况,但它的 H100/H200 GPU 并没有售罄

智能计算 2025-09-04

谷歌正拉拢小型云服务提供商托管 TPU,目标直指英伟达

智能计算 2025-09-04

美国政府吊销了台积电向其中国大陆晶圆厂运送设备的授权

2025 年上半年中国芯片产业迅猛发展 — 38 家 A 股上市公司据报道实现增长

Intersil ZL9101 数字电源模块 - 热设计

电源模块设计

视频 2011-10-17

iDEAL 半导体宣布推出基于 SuperQ™的 200V MOSFET 系列,具有行业领先的成本×性能

更多 培训课堂
更多 焦点
更多 视频

技术专区