返回> 网站首页 

licheepi-nano(荔枝派) - SPI驱动CC2520 - 设备树

yoours2024-11-01 20:09:33 阅读 400

简介一边听听音乐,一边写写文章。

一、简介

    设备树修改包含 suniv-f1c100s.dtsi 和 suniv-f1c100s-licheepi-nano.dts 两个文件。


二、suniv-f1c100s.dtsi

    增加dma、spi1定义

    1. spi1引脚定义

        在 pio: pinctrl@1c20800 节点添加

        spi1_pc_pins: spi1-pc-pins {

            pins = "PA2"/*CLK*/, "PA0"/*CS*/, "PA3"/*MISO*/, "PA1"/*MOSI*/;

            function = "spi1";

        };


    2. dma定义

        根据spi-sun6i.c定义通讯数据长度小于128不启用dma传输。cc2520最长不超过128,所以实际并未使用dma传输。

        在soc节点添加

dma: dma-controller@1c02000 {

compatible = "allwinner,sun6i-a31-dma";

reg = <0x01c02000 0x1000>;

interrupts = <18>;

clocks = <&ccu CLK_BUS_DMA>;

resets = <&ccu RST_BUS_DMA>;

#dma-cells = <2>;

};


        3. spi1定义

        在soc节点添加

spi1:spi@1c06000 {

    compatible = "allwinner,sun6i-a31-spi";

    reg =<0x1c06000 0x1000>;

    interrupts =<11>;

    clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_BUS_SPI1>;

    clock-names = "ahb", "mod";

    resets = <&ccu RST_BUS_SPI1>;

    status = "disabled";

    dmas = <&dma SUN4I_DMA_DEDICATED 5>,

    <&dma SUN4I_DMA_DEDICATED 5>;

    dma-names = "rx", "tx";

    num-cs = <1>;// 本SPI连接多少设备

    #address-cells =<1>;

    #size-cells =<0>;

    bias-pull-up;//上拉

};


三、suniv-f1c100s-licheepi-nano.dts

    1. 增加CC2520定义

    &spi1 {

pinctrl-names = "default";

pinctrl-0 = <&spi1_pc_pins>;

status = "okay";


cc2520@0 {

compatible = "ti,cc2520";

status = "okay";


reg = <0>;// 与片选有关

spi-max-frequency = <2000000>;

spi-tx-bus-width = <1>;

                spi-rx-bus-width = <1>;


                // CC2591增益控制

ant_paen-gpios = <&pio 4 10 GPIO_ACTIVE_LOW>;

ant_en-gpios   = <&pio 4 11 GPIO_ACTIVE_LOW>;

ant_hgm-gpios  = <&pio 4 12 GPIO_ACTIVE_LOW>;


cc2520_reset-gpios = <&pio 4 3 GPIO_ACTIVE_LOW>;

/*FIFOP*/

cc2520_gpio4-gpios = <&pio 4 5 GPIO_ACTIVE_LOW>;

/*FIFO*/

cc2520_gpio3-gpios = <&pio 4 6 GPIO_ACTIVE_LOW>;

/*CC2520_GPIO_RSSI_VALID*/

cc2520_gpio2-gpios = <&pio 4 7 GPIO_ACTIVE_LOW>;

/*CC2520_EXC_TX_FRM_DONE*/

cc2520_gpio1-gpios = <&pio 4 8 GPIO_ACTIVE_LOW>;

/*CC2520_EXC_RX_FRM_DONE 这里使用了普通gpio定义方式*/

cc2520_RxInterrupt-gpios = <&pio 4 9 GPIO_ACTIVE_LOW>;

};

};


四、一些定义说明

    1. GPIO定义

    gpio = <&pio   1   2   3   4   5  6>;

    gpio:属性名字(随便命名)

    pio:指向哪个gpio控制器,  pio / r_pio(PL组)

    1: 哪组gpio, PA(0),PB(1),PC(2),PD(3),PE(4),PF(5),PG(6),PH(7),PI(8),PJ(9),PK(10),PL(11)

    2: pin bank 内偏移(即组内第几个io口)

    3: gpio功能类型,0输入, 1输出, 6和外部中断,7关闭功能(具体查手册)

    4: 驱动力,电流等级(0 - 3),级别越高,输出电流越大

    5: 上下拉, 0关闭功能, 1上拉, 2下拉, 3保留

    6: 表示有效电平


2. SPI模式

    不写的时候为0,定义后为1

    #spi-cpol;

    #spi-cpha;

    CPOL定义了SPI总线空闲时时钟信号的电平

    CPOL=0时,时钟信号在空闲时为低电平

    CPOL=1时,时钟信号在空闲时为高电平


    CPHA定义了采样时钟沿的时刻进行数据传输

    CPHA=0时,在时钟的第一个跳变沿(上升沿或下降沿)进行数据的采样

    CPHA=1时,在时钟的第二个跳变沿(下降沿或上升沿)进行数据的采样


3. 其他未使用

    bias-pull-up;//引脚上拉

    spi-lsb-first;//传输方式

    spi-cs-high;//spi cs高有效




微信小程序扫码登陆

文章评论

400人参与,0条评论