NXP MCU 技术论坛
直播中

丁冬芹

7年用户 1289经验值
私信 关注
[问答]

如何将SPI与RT1020和Zephyr一起使用?

我一直在尝试让 SPI 外设在 RT1020 评估板上与 Zephyr 一起运行。可悲的是,
我收到一个非常不明确的错误:
undefined reference to `__device_dts_ord_83'
我的 prj.conf 看起来像这样:
CONFIG_GPIO=y
CONFIG_SPI=y我尝试了其他参数,例如 CONFIG_SPI_ASYNC,但这并没有改变任何东西。
我正在使用 .overlay 文件添加 SPI 设备:
&lpspi1 {
        trinamic: trinamic@0 {
        compatible = "vnd,spi-device";
        reg = <0>;
        spi-max-frequency = <100000>;
        label = "trinamic";
        };
};
我的代码看起来像这样:

剧透 (Highlight to read)#include
#include
#include

#define SPI_TEST_DEV DT_COMPAT_GET_ANY_STATUS_OKAY(trinamic)
#define SPI_OP SPI_OP_MODE_MASTER | SPI_MODE_CPOL | SPI_MODE_CPHA | SPI_WORD_SET(8) | SPI_LINES_SINGLE

uint8_t my_buffer[4] = {1, 1, 1, 1};
struct spi_buf my_spi_buffer[1];
const struct spi_buf_set tx_buff = {my_spi_buffer, 1};

const struct spi_dt_spec spi_dev =
    SPI_DT_SPEC_GET(DT_NODELABEL(trinamic), SPI_OP, 0);
uint8_t once = 0;

void main(void)
{

    if (once == 0)
    {

        my_spi_buffer[0].buf = my_buffer;
        my_spi_buffer[0].len = 4;

        spi_write_dt(&spi_dev, &tx_buff);

        once = 1;
    }
}
#include
#include
#include

#define SPI_TEST_DEV DT_COMPAT_GET_ANY_STATUS_OKAY(trinamic)
#define SPI_OP SPI_OP_MODE_MASTER | SPI_MODE_CPOL | SPI_MODE_CPHA | SPI_WORD_SET(8) | SPI_LINES_SINGLE

uint8_t my_buffer[4] = {1, 1, 1, 1};
struct spi_buf my_spi_buffer[1];
const struct spi_buf_set tx_buff = {my_spi_buffer, 1};

const struct spi_dt_spec spi_dev =
    SPI_DT_SPEC_GET(DT_NODELABEL(trinamic), SPI_OP, 0);
uint8_t once = 0;

void main(void)
{

    if (once == 0)
    {

        my_spi_buffer[0].buf = my_buffer;
        my_spi_buffer[0].len = 4;

        spi_write_dt(&spi_dev, &tx_buff);

        once = 1;
    }
}



我不太明白,遗憾的是环回 spi 示例也很混乱。如果有人能帮助我,那就太好了!非常感谢。

更多回帖

发帖
×
20
完善资料,
赚取积分