Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI
英飞凌Infineon
英飞凌开发板模块评测任务大挑战-SPI驱动测试
发布于 2023-05-06 23:12:17 浏览:674
订阅该版
[tocm] # 测评目的 使用PSoC™ 62 with CAPSENSE™ evaluation kit开发板适配的RTT SPI驱动,做显示测试。 #硬件分析  图1 芯片内部系统框图 如图1所示,这个芯片内部的SPI是通过SCB(Serial Communications Block)实现的。并且,所有的外设都是挂在同一总线上。  图2 系统时钟连接框图 如图2所示,SPI(SCB)这些常用外设与内核时钟同一来源。  图3 摘自数据手册中对SPI的描述 可见常见的Motorola和TI标准都是支持的,鉴于本人之前只用过Motorolab标准的SPI,后面的测试也是使用的这种。 #SPI的使用 RTT官方已经对这块板子进行了系统与驱动的适配,所以我们可以直接使用RTT的SPI驱动设备框架(RTT赛高!)。 使用的开发环境为RT-Thread Studio ,选择基于开发板创建工程。再是能SPI驱动就可以了。  我手上的SPI驱动模块只有屏幕和W25Q64,屏幕驱动比较简单,所以我选择了这种方式。 使用的模块为1.3寸ST7789屏幕  随后是移植屏幕的驱动部分,参考了别人写的。 [https://github.com/Floyd-Fish/ST7789-STM32.git](https://github.com/Floyd-Fish/ST7789-STM32.git) [https://github.com/Rbb666/ILI9341.git](https://github.com/Rbb666/ILI9341.git) 参考后的程序如下 ```c rt_err_t _spi_lcd_init(void) { rt_err_t res = RT_EOK; Lcd_pin_init(); spi_device_attach(PKG_ST_7789_SPI_BUS_NAME, PKG_ST_7789_SPI_DEVICE_NAME, PKG_ST_7789_CS_PIN); lcd_dev = (struct rt_spi_device *)rt_device_find(PKG_ST_7789_SPI_DEVICE_NAME); if (lcd_dev != RT_NULL) { struct rt_spi_configuration spi_config; spi_config.data_width = 8; spi_config.max_hz = 20 * 1000 * 1000; spi_config.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB; rt_spi_configure(lcd_dev, &spi_config); } else { res = -RT_ERROR; } LCD_Init(); return res; } INIT_COMPONENT_EXPORT(_spi_lcd_init); ``` 注册设备操作如下 ```c rt_err_t spi_device_attach(const char *bus_name, const char *device_name, rt_base_t cs_pin) { RT_ASSERT(bus_name != RT_NULL); RT_ASSERT(device_name != RT_NULL); rt_err_t result = RT_EOK; struct rt_spi_device *spi_device; /* attach the device to spi bus*/ spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device)); RT_ASSERT(spi_device != RT_NULL); result=rt_hw_spi_device_attach(bus_name, device_name, cs_pin); if (RT_EOK != result) { LOG_E("%s attach to %s faild, %d\n", device_name, bus_name, result); } else { LOG_I("%s attach to %s done", device_name, bus_name); } return result; } ``` 使用的引脚和设备名如下 ```c #define PKG_ST_7789_SPI_BUS_NAME "spi0" #define PKG_ST_7789_SPI_DEVICE_NAME "spi01" #define PKG_ST_7789_DC_PIN GET_PIN(5, 6) #define PKG_ST_7789_RES_PIN GET_PIN(5, 7) #define PKG_ST_7789_BLK_PIN GET_PIN(11, 5) #define PKG_ST_7789_CS_PIN GET_PIN(0, 5) ``` 如下显示,注册成功  对刷屏进行简单的时间测试 ```c static int lcd_spi_test(void) { uint8_t index = 0; uint16_t time_tick0=0,time_tick1=0; for (index = 0; index < sizeof(color_array) / sizeof(color_array[0]); index++) { time_tick0=rt_tick_get(); LCD_Clear(color_array[index]); time_tick1=rt_tick_get(); LOG_I("lcd clear color: %#x", color_array[index]); LOG_I("spend time:%d ms\n", time_tick1-time_tick0); DELAY(200); } return RT_EOK; } MSH_CMD_EXPORT(lcd_spi_test, lcd will fill color => you need init lcd first); ```   简单测试结束。 [代码gitee链接](https://gitee.com/starry-m/psoc6-spi-testing.git) 后面的测试待续~~~
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
EITR_8350
学习ing~~~
文章
2
回答
0
被采纳
0
关注TA
发私信
相关文章
1
BBB的SPI驱动
2
求个SPI上挂两个或多个设备的使用例子
3
SPI设备有个bug
4
spi flash 的fatfs使用一段时间后读写文件出现故障
5
SPI驱动
6
请教rt_spi_configure函数理解
7
SPI FLASH挂载的问题
8
SPI-FLASH 文件系统 SPIFFS
9
求助一个完整的 spi flash 驱动
10
关于同时使用文件系统与SPI FLASH的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
UART
cubemx
ESP8266
BSP
ota在线升级
WIZnet_W5500
PWM
packages_软件包
flash
freemodbus
GD32
潘多拉开发板_Pandora
ADC
keil_MDK
定时器
flashDB
编译报错
ulog
socket
rt_mq_消息队列_msg_queue
msh
中断
Debug
SFUD
C++_cpp
MicroPython
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部