For most people the above image means absolutely nothing, but for that one guy that has been searching for two days straight with no luck and finally arrives here, he has never ever seen anything more beautiful. To that guy: Dude, you are in safe hands. I’ll guide you through it : )

With Linux Kernel 3.8.x, the use of device tree overlays are used for enabling and configuring drivers. This post gives an example of how to enable Both the channels of SPI1 on a BeagleBone. Note that a kernel should be compatible with both an Angstrom file system or any other suitable file system like Debian, although this one has been developed with Ubuntu 12.04.

To get some background info on this topic have a look at Enable PWM on BeagleBone with DT overlays and Adding BeagleBone cape support to a kernel with Device Tree in Ubuntu.

Mux the pins
In the first fragment, the pins must be muxed. Note that at the time of this writing, only the mode (the first three bits) and not the mux is working so the configuration must be done by the driver. The SPI driver fixes this.

bone_replicape_spi1_pins: pinmux_replicape_spi1_pins {
pinctrl-single,pins = <
0x190 0x13 /* P9_31 = mcasp0_aclkx.spi1_sclk , OUTPUT_PULLUP | MODE3 */
0x194 0x33 /* P9_29 = mcasp0_fsx.spi1_d0 , INPUT_PULLUP | MODE3 */
0x198 0x13 /* P9_30 = mcasp0_axr0.spi1_d1 , OUTPUT_PULLUP | MODE3 */
0x19c 0x13 /* P9_28 = mcasp0_ahclkr.spi1_cs0 , OUTPUT_PULLUP | MODE3 */
0x164 0x12 /* P9_42 = GPIO0_7 = eCAP0_in_PWM0_out.gpio0[7] , OUTPUT_PULLUP | MODE2 */
>;
};

Enable the driver
To enable the driver, you must override the status of the spi1 or spi2 (or both) targets.

	fragment@1 {
target = <&spi1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bone_replicape_spi1_pins>;
cs-gpios = <&gpio4 17 0>, <&gpio1 7 0>; stepper_control{
#address-cells = <1>;
#size-cells = <0>; compatible = "spidev"; reg = <0>;
spi-max-frequency = <16000000>;
spi-cpha; // Stepper control has mode 1 (CPOL = 0, CPHA = 1)
}; stepper_current{
#address-cells = <1>;
#size-cells = <0>; compatible = "spidev"; reg = <1>;
spi-max-frequency = <16000000>;
// Stepper current has mode 0 (CPOL = 0, CPHA = 0)
};
};
};

Status mus be “okay” here to override the default “disabled” in am33xxdtsi.

There are also a couple of more things to consider.
Pincontrol-names – “The list of names to assign states” from the documentation.
pincontrol-pins refrences the cell in the pinmux fragment.
cs-gpios – This refers to the pins used for Chip Selects. Since there are two channels,
(SPI1.0 and SPI1.1) activated, these must be defined. The arguments in the brackets refer to
GPIO bank, but there is a gotcha: If the pin is called GPIO3_17 in the datasheet, it becomes
<&GPIO4 17 ?> in the device tree, so one higher for the bank nr. The last number is the flags to send to the GPIO controller.
Output is 0, input is 1.
Look in the kernel documentation on GPIO for more info:
https://www.kernel.org/doc/Documentation/gpio.txt

Enable the SPIDEV
The next two nodes are the two next SPI channels. Call them whatever. To use the spidev user interface (the one that makes /dev/spi1.* show up), specify compatible = “spidev”.
If you have an SPI display or similar, there are drivers for that as well. Look in the folder

KERNEL/fimrware/capes/

and look at the cape overlay for Koen Kooi’s HEXY robot, it has an SPI display from Adafruit:
http://www.youtube.com/watch?v=iH5OPj-Yybc (Getting a very good framerate on an SPI display, I might add..)

The variable “reg” refers to which Chip Select to use.
Max frequency is just that, guess.

There are also options for CPHA, CPOL,

Acronyms
McSPI – Multi channel Serial Peripheral Interface
CS – chip select

Files involved
McSPI – KERNEL/drivers/spi/spi-omap2-mcspi.c
spidev – KERNEL/drivers/spi/spidev.c
spi – KERNEL/drivers/spi/spi.c

Enable SPI 1.0 and 1.1 with device tre overlays on BeagleBone的更多相关文章

  1. Help for enable SSL 3.0 and disable TLS 1.0..

    https://support.mozilla.org/en-US/questions/967266 i cant find tab Encryption for enable SSL 3.0 and ...

  2. Android Studio 3.0找不到Android Device Monitor

    因为自Android Studio 3.0开始弃用Android Device Monitor,Android Developers官网上的原话是: Android Device Monitor is ...

  3. Android-Android Studio 3.0找不到Android Device Monitor

    原文:https://blog.csdn.net/yuanxiang01/article/details/80494842?utm_source=copy   为什么Android Studio 3. ...

  4. spi子系统之驱动SSD1306 OLED

    spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...

  5. Blackfin DSP(五):BF533的SPI接口

    533SPI的特性 最高速度可达SCLK/4: 支持主模式和从模式: 可使用8个GPIO口作为从选择线: 1 slave select input pins 7 slave select output ...

  6. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial EEPROM/NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启 ...

  8. 【转】SPI总线协议

    SPI总线协议 By Xiaomin | April 17, 2016| 技术 概述 SPI(Serial Peripheral Interface)总线是主要应用于嵌入式系统内部通信的串行同步传输总 ...

  9. SPI SWD Protocol Implement

    //================================================================================= // ARM SWD Mode ...

随机推荐

  1. html5 动画精灵

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  2. 【HDOJ】Power Stations

    DLX.针对每个城市,每个城市可充电的区间构成一个plan.每个决策由N*D个时间及N个精确覆盖构成. /* 3663 */ #include <iostream> #include &l ...

  3. Linux Kernel KVM 'apic_get_tmcct()'函数拒绝服务漏洞

    漏洞版本: Linux Kernel 漏洞描述: Bugtraq ID:64270 CVE ID:CVE-2013-6367 Linux Kernel是一款开源的操作系统. Linux KVM LAP ...

  4. 自定义web服务器(四)

    关于HTTP协议的具体内容,前面章节已经有所讲解,相信读者已有所了解,在此不在累述,本章节讲解自定义web服务器.  一,.net提供自定义Web服务器的类 以下只是写主要的类 1.HTTPListe ...

  5. Mac常用目录

    服务存放目录: ~/Library/Services/ Xcode代码片段目录 ~/Library/Developer/Xcode/UserData/CodeSnippets

  6. C#值类型以及默认值记录下

    C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...

  7. We're Hiring A Software Tester

    测试人员的基本修养: 代码编写,不可或缺 乔布斯说:Design is not just what it looks like and feel like,design is how it works ...

  8. html input设置为只读属性

    有两种方式可以实现input的只读效果:disabled 和 readonly. 自然两种出来的效果都是只能读取不能编辑,可是两者有很大不同. Disabled说明该input无效,及其value不会 ...

  9. Logo常用的12种颜色

    1.浅绿 #8cc540 2. 深绿 #009f5d 3. 暗蓝 #2456ab 4. 蓝色 #019fde 5. 深蓝 #007cdc 6. 深紫 #887ddd 7. 浅紫 #cd7bdd 8. ...

  10. nyoj 96 一个水题目

    虽然很简单,发现自己用内存太高了了,算了,我就是这水平了. 描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示 ...