返回> 网站首页
licheepi-nano(荔枝派) - SPI驱动CC2520 - 设备树
yoours2024-11-01 20:09:33
简介一边听听音乐,一边写写文章。
一、简介
设备树修改包含 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高有效