RT-Thread SPI总线

1.SPI配置

进入到对应的工程目录BSP路径下,执行menuconfig进入到配置界面,按照下面方式选中SPI总线设备模块。

RT-Thread SPI总线_第1张图片

保存配置,并执行scons --target=mdk5进行编译生成MDK5工程

RT-Thread SPI总线_第2张图片

生成完毕之后,重新打开工程可以看到SPI的驱动代码已经更新。

2.添加参考的LCD示例代码

将示例中LCD的代码拷贝到工程目录下并添加至MDK工程中

添加完驱动并编译会出现下面错误

.\build\keil\Obj\rt-thread.axf: Error: L6218E: Undefined symbol rt_hw_spi_device_attach (referred from drv_lcd.o).

错误显示没有找到rt_hw_spi_device_attach这个函数,然后全局搜索该函数在在drv_spi.h中是有定义,如下路径

E:\WorkSpace\rt-thread\bsp\stm32\libraries\HAL_Drivers\drv_spi.h(24) : rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, GPIO_TypeDef* cs_gpiox, uint16_t cs_gpio_pin);
E:\WorkSpace\rt-thread\bsp\stm32\libraries\HAL_Drivers\drv_spi.c(513) : rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, GPIO_TypeDef *cs_gpiox, uint16_t cs_gpio_pin);

则说明rt_hw_spi_device_attach有定义,但是没有被参与编译。查看代码drv_spi.c中可以找到对应的宏开关,然后全局搜索,发现没有打开SPI3的宏开关

#if defined(BSP_USING_SPI1) || defined(BSP_USING_SPI2) || defined(BSP_USING_SPI3) || defined(BSP_USING_SPI4) || defined(BSP_USING_SPI5) || defined(BSP_USING_SPI6)

#include "drv_spi.h"
#include "drv_config.h"
#include 

//#define DRV_DEBUG
#define LOG_TAG              "drv.spi"
#include 

在工程目录下的rtconfig.h中加入该宏定义,打开对应的SPI代码。

#define BSP_USING_SPI3

然后重新编译,编译通过。

3.使用list_device检测设备

使用串口终端遍历SPI外设,则会遍历到总线SPI3,设备是SPI30设备节点

 

4.使用Image2Lcd转换器

选择“打开”选择需要显示的图片,按照下面的设置进行配置

RT-Thread SPI总线_第3张图片

点击“保存”后会生成.c文件,将C源文件中的图片像素数组拷贝到自己的工程中

5.RT-Thread的SPI相关API

此部分内容可以参考RT-THREAD文档中心:《AN0004-RT-Thread-SPI 设备应用笔记》

你可能感兴趣的:(RT-Thread)