SPI通讯超时

固件类型:官方提供的固件
固件文件名称:Linux version 4.19.232
固件下载地址:Firefly | 让科技更简单,让生活更智能
Log日志:log.txt

驱动读函数
static ssize_t adc_read(struct file *filp, char __user *buf, size_t cnt, loff_t *off)
{
int ret = 0;
unsigned char data = 0x58;
struct adc_dev *dev = (struct adc_dev *)filp->private_data;
struct spi_device *spi = (struct spi_device *)dev->spi;

struct spi_message m;
struct spi_transfer* t;
t = kzalloc(sizeof(struct spi_transfer), GFP_KERNEL);
if(!t) {
    return -ENOMEM;
}
t->tx_buf = &data;
t->len = 1;

printk("in ADC_read \r\n");

// spi_read(spi,buf,1);
spi_message_init(&m);
spi_message_add_tail(t,&m);
ret = spi_sync(spi,&m);
printk(“spi_sync return = %d \r\n”,ret);
printk(“adc_read_ok \r\n”);

return 0;

}

设备树的配置
&spi0 {
status = “okay”;
assigned-clock-rates = <50000000>;
adc_5195:adc5195@2 {
compatible = “agv,adc5195”;
status = “okay”;
reg = <0x2>;
spi-max-frequency = <20000000>;
cs-gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>;
spi-cpol;
};
};

报错截图
[ 107.121487] adc_probe
[ 107.122526] adc_probe finsh
[ 122.861958] open file
[ 122.862001] in ADC_read
[ 122.862246] rockchip-pinctrl pinctrl: enable function spi0 group spi0m0-cs0
[ 122.862261] rockchip-pinctrl pinctrl: setting mux of GPIO0-22 to 2
[ 122.862287] rockchip-pinctrl pinctrl: setting pull of GPIO0-22 to 1
[ 122.862297] rockchip-pinctrl pinctrl: enable function spi0 group spi0m0-cs1
[ 122.862303] rockchip-pinctrl pinctrl: setting mux of GPIO0-20 to 2
[ 122.862309] rockchip-pinctrl pinctrl: setting pull of GPIO0-20 to 1
[ 122.862316] rockchip-pinctrl pinctrl: enable function spi0-hs group spi0m0-pins
[ 122.862321] rockchip-pinctrl pinctrl: setting mux of GPIO0-13 to 2
[ 122.862335] rockchip-pinctrl pinctrl: setting mux of GPIO0-21 to 2
[ 122.862340] rockchip-pinctrl pinctrl: setting mux of GPIO0-14 to 2
[ 122.862347] rockchip-pinctrl pinctrl: setting pull of GPIO0-13 to 1
[ 122.862353] rockchip-pinctrl pinctrl: setting pull of GPIO0-21 to 1
[ 122.862359] rockchip-pinctrl pinctrl: setting pull of GPIO0-14 to 1
[ 123.065645] adc5195 spi0.2: SPI transfer timed out
[ 123.065879] spi_master spi0: failed to transfer one message from queue
[ 123.066072] spi_sync return = -110
[ 123.066080] adc_read_ok
root@firefly:~# ^C
root@firefly:~#

帮忙分析下SPI总线超时的原因,感谢!

tchip_askquestions
log.txt (3.32 KB)