OpenEdv-开源电子网

标题: 【AtomPi RK3568】SPI的MOSI引脚无信号,SPI无法使用 [打印本页]

作者: 梦星银魂    时间: 2024-5-9 00:35
标题: 【AtomPi RK3568】SPI的MOSI引脚无信号,SPI无法使用
本帖最后由 梦星银魂 于 2024-5-9 00:37 编辑

所使用到的SPI引脚:
GPIO4_C2_d  GPIO4_C3_d   GPIO4_C5_d
CS引脚采用 GPIO4_C4 的GPIO功能,SPI接淘宝常见的SPI FLASH模块w25q32:

初始化的第一条指令先读SPI FLash的ID,结果发现,全是0,仿佛SPI没启动起来。
不接SPI FLASH,直接接逻辑分析仪,发现SPI的CLK有输出,但是MOSI始终为0

本人使用的设备树:
rk3568-atk-atompi-ca1.dts
...
&spi3{
        /* 选择引脚 */
        pinctrl-names = "default";
        pinctrl-0 = <&spiflash_gpio>;
        status = "okay";
        flash_w25q32:w25q32@00{
                reg = <0x00>;
                compatible = "alientek,w25q32";
                spi-max-frequency = <24000000>;
                /* 选择引脚GPIO4_C4 默认状态下是高电平 */
                cs-gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
        };
};

&pinctrl {
...
        /* spi flash gpio 引脚 */
        spiflash{
                spiflash_gpio:pinspiflash{
                        rockchip,pins =
                                /* spi3_clkm1 */ /* 这里的软件配置上拉不知道有没有鸟用 */
                                <4 RK_PC2 2 &pcfg_pull_up_drv_level_1>,
                                /* spi3_misom1 */
                                <4 RK_PC5 2 &pcfg_pull_up_drv_level_1>,
                                /* spi3_mosim1 */
                                <4 RK_PC3 2 &pcfg_pull_up_drv_level_1>,
                                /* cs gpio */
                                <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up_drv_level_1>;
                };
        };

...
};


所使用到的测试驱动文件已经放到了附件中,出问题的是:
static int spi_read_w25x_id_0(struct spi_device *spi)
{
    int status = 0;
    char tbuf[5] = {READ_UID}; //READ_UID为0x9F 读取SPI Flash的ID
    char rbuf[5] = {0};

    struct spi_transfer t = {
        .tx_buf = tbuf,
        .len    = ARRAY_SIZE(tbuf),
    };
    struct spi_transfer r = {
        .rx_buf = rbuf,
        .len    = ARRAY_SIZE(rbuf),
    };
    struct spi_message  m = {0};
    spi_message_init(&m);
    spi_message_add_tail(&t, &m);
    spi_message_add_tail(&r, &m);
    status = spi_sync(spi, &m);
    dev_err(&spi->dev, "ID =%02x %02x %02x %02x %02x\r\n", \
            rbuf[0], rbuf[1], rbuf[2], rbuf[3], rbuf[4]);
    return status;
}

MOSI引脚一直没信号。

恳请论坛里的高手或者官方大大能给与解答,不胜感激之至。

作者: 梦星银魂    时间: 2024-5-10 01:36
已解决
作者: youlijun    时间: 2024-8-12 10:32
梦星银魂 发表于 2024-5-10 01:36
已解决

楼主 咋解决的呀




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4