RT-Thread SPI总线

RT-Thread 专栏收录该内容
0 篇文章 0 订阅

1.SPI配置

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

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

生成完毕之后,重新打开工程可以看到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 <string.h>

//#define DRV_DEBUG
#define LOG_TAG              "drv.spi"
#include <drv_log.h>

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

#define BSP_USING_SPI3

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

3.使用list_device检测设备

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

 

4.使用Image2Lcd转换器

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

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

5.RT-Thread的SPI相关API

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

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值