ARM技术论坛
直播中

小丽

6年用户 41经验值
擅长:光电显示
私信 关注
[问答]

AM437x的SPI作为主模式,利用linux内核的spi_write和spi_read函数发送命令时,回读数据rxbuf一直是0,请问这是为什么?


       

                        0x150 ( PIN_INPUT | MUX_MODE0 ) /* (P23) spi0_sclk.spi0_sclk */
                        0x158 ( PIN_INPUT  | MUX_MODE0 ) /* (T21) spi0_d1.spi0_d1 */
                >;
spi部分设置如下:
<&spi0 {
        status = "okay";
       
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins_default>;
        pinctrl-1 = <&spi0_pins_sleep>;
        ti,pindir-d0-in-d1-out =<1>; // optional       
        cs0-gpio = <&gpio0 5 GPIO_ACTIVE_LOW>;                /* Bank 0 pin 5 */
        /*spidev@0{
                status = "okay";
                compatible = "rohm,dh2228fv";
                spi-max-frequency = <48000000>;
                reg =<0x0>;
                };*/
        adc128@0{
                status = "okay";
                compatible = "ti,adc128s022-0";
                spi-max-frequency = <3200000>;
                reg = <0>;                       

        };
……
>



  • 微信图片_20200429115200.jpg
  • capture_20200429114810569.gif

回帖(1)

小丽

2020-5-12 11:05:57
首先,IO设置时,除了cs之外,其余管脚设置为input
其次, ti,pindir-d0-in-d1-out =<1>; 设置的是linuxspi主控的输入输出,不是从设备的,这个要捋清楚
再者,spi设备读时,有两个操作spi_write和spi_read,必须两次,否则通道数值会错位
最后,8通道的adc芯片在操作时,其余管脚不能空置(什么都不接),可以把其余管脚接地。。。
举报

更多回帖

×
20
完善资料,
赚取积分