瑞萨单片机开发教程[三十四] SCI 配置 SPI 开发板官网https://www.edevkit.com/本系列教程目录- 瑞萨单片机开发教程[一] e2-studio DAP LINK开发环境搭建- 瑞萨单片机开发教程[二] Keil/RASC开发环境搭建- 瑞萨单片机开发教程[三] 新建RASC工程- 瑞萨单片机开发教程[四] GPIO输出——led实验- 瑞萨单片机开发教程[五] GPIO输入——按键key实验- 瑞萨单片机开发教程[六] ICU外部中断实验- 瑞萨单片机开发教程[七] SCI UART串口通信实验- 瑞萨单片机开发教程[八] DMAC 串口数据传输实验- 瑞萨单片机开发教程[九] ADC 电压采集实验SCI SPI 实验本章目标了解 RA6M5 处理器的 SCI SPI 模块学会使用 RASC 配置 SCI SPI使用 API 读写数据。硬件设计略参见配套硬件原理图软件设计新建工程复制一份 “07 SCI_UART_Recv_send” 修改文件夹名 “34 SCI_SPI”双击打开EBF_RA6M5.uvprojx工程通过 Keil 的新建文件新建sci_spi.c和sci_spi.h保存到目录下的\src文件夹下。FSP 配置Keil 界面选择 “Tools”→“RA Smart Configurator” 打开 RASC 界面。在 “Pins” 添加 SCI 设备配置成 Simple SPI 模式。在 “Stack” 添加 SCI SPI Stack 模块。配置 SCI SPI 模块参数。配置完成之后可以按下快捷键“Ctrl S”保存最后点击 “Generate Project Content” 按钮让软件自动生成配置代码即可。程序设计初始化 SCI SPI 模块实现数据回环收发需要把 SPI 的 MOSI 和 MISO 互接SCI SPI 的 RXD0 对应 MISOTXD0 对应 MOSI测试接收的数据打印到串口。打开 SCI SPI 设备fsp_err_t R_SCI_SPI_Open(spi_ctrl_t * p_ctrl, spi_cfg_t const * const p_cfg);直接写数据fsp_err_t R_SCI_SPI_Write(spi_ctrl_t * const p_ctrl, void const * p_src, uint32_t const length, spi_bit_width_t const bit_width);直接读数据fsp_err_t R_SCI_SPI_Read(spi_ctrl_t * const p_ctrl, void * p_dest, uint32_t const length, spi_bit_width_t const bit_width);读写数据fsp_err_t R_SCI_SPI_WriteRead(spi_ctrl_t * const p_ctrl, void const * p_src, void * p_dest, uint32_t const length, spi_bit_width_t const bit_width);程序编写sci_spi.h头文件定义初始化和读写函数。#ifndef __BSP_SCI_SPI_H #define __BSP_SCI_SPI_H #include hal_data.h void sci_spi_Init(void); void SCI_SPI_WriteRead_data(uint8_t *wBuf, uint8_t *rBuf, uint16_t len); #endifsci_spi.c中实现读写。#include sci_spi.h void sci_spi_Init(void) { R_SCI_SPI_Open(g_sci_spi2.p_ctrl, g_sci_spi2.p_cfg); } static volatile bool gSPITxCplt false; void sci_spi_callback(spi_callback_args_t *arg) { /* 判断是否是发送完成触发的中断 */ /* 如果是的话就将发送完成标志位置1 */ if(SPI_EVENT_TRANSFER_COMPLETE arg-event) gSPITxCplt true; } static void SPIWaitTxCplt(void) { uint16_t wTimeout 50; while(!gSPITxCplt wTimeout) { R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS); wTimeout--; } gSPITxCplt false; } void SCI_SPI_WriteRead_data(uint8_t *wBuf, uint8_t *rBuf, uint16_t len) { R_SCI_SPI_WriteRead(g_sci_spi2.p_ctrl, wBuf, rBuf, len, SPI_BIT_WIDTH_8_BITS); SPIWaitTxCplt(); }在hal_entry.c文件中添加sci_spi.h循环中每秒读写数据。uint8_t wBuf[10] {0}; uint8_t rBuf[10] {0}; void hal_entry(void) { /* TODO: add your own code here */ led_Init(); // LED 初始化 uart0_Init(); sci_spi_Init(); printf(start sci spi test\r\n); for(uint8_t i0; i10; i) { wBuf[i] i; } while(1) { LED1_TOGGLE(); R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); //延时1秒 SCI_SPI_WriteRead_data(wBuf, rBuf, 10); printf(sci spi rx:); for(int i0; i10; i) { printf(%x , rBuf[i]); } printf(\r\n); } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif }下载验证连接下载器将程序编译并下载到开发板之后按下复位按键来复位开发板程序启动初始化完。可以看到每秒接收数据值。

相关新闻

揭秘惠州网站建设外包真相:为什么越来越多的企业选择将核心业务交给专业团队

揭秘惠州网站建设外包真相:为什么越来越多的企业选择将核心业务交给专业团队

在这个数字化浪潮席卷全球的今天,如果你还在问“我的企业到底需不需要一个网站”,那可能真的有点落后于时代了。但如果你已经意识到网站的重要性,接下来要面对的真正难题其实是:这网站到底该怎么做?是自己招个程序员慢慢磨,还是找外面的公司做?对于绝大多数在惠州打拼的…

2026/8/5 11:53:42
医疗医院网站建设如何提升患者信任度与在线预约转化率全攻略

医疗医院网站建设如何提升患者信任度与在线预约转化率全攻略

在这个数字化浪潮席卷全球的今天,当我们谈论医疗健康时,早已不再是那个只靠口碑相传、甚至还要排长队挂号的旧时代了。现在的患者,在走进医院大门之前,往往已经在手机上把这家医院“参观”了一遍。他们会在搜索引擎里输入症状,会去对比不同医院的专家口碑,更会仔细审视这…

2026/8/5 11:53:42
深圳平湖网站建设:揭秘本地企业如何通过高性价比数字化方案实现弯道超车

深圳平湖网站建设:揭秘本地企业如何通过高性价比数字化方案实现弯道超车

在这个互联网早已渗透进生活每一个角落的时代,如果你还在问“为什么我的公司需要一个网站”,那我只能遗憾地告诉你,你可能已经错过了一波又一波的流量红利。特别是对于身处深圳平湖这片商业热土的企业来说,网站建设不仅仅是一个展示窗口,更是你在数字海洋中锚定自身价值、…

2026/8/5 11:53:42