Nuvoton M0518 之 Slave SPI通信注意事项
使用0518芯片的SPI0中断来实现0518芯片模块作为Slave方,使用SPI0接口来接收打印“Master方”发送过来的一个字节数据。
1、SPI0中断处理以及初始化相关源码如下:
uint32_t u32RecvData_spi = 0; //
void SPI0_IRQHandler(void)
{/* Check RX EMPTY flag */while(SPI_GET_RX_FIFO_EMPTY_FLAG(SPI0) == 0){/* Read RX FIFO */u32RecvData_spi = SPI_READ_RX(SPI0);printf("%X\n", u32RecvData_spi);}/* Check TX FULL flag and TX data count */while((SPI_GET_TX_FIFO_FULL_FLAG(SPI0) == 0)){/* Write to TX FIFO */SPI_WRITE_TX(SPI0, 0); //用0x00填满FIFO的TX缓存区。}/* Check the RX FIFO time-out interrupt flag */if(SPI_GetIntFlag(SPI0, SPI_FIFO_TIMEOUT_INT_MASK)){/* If RX FIFO is not empty, read RX FIFO. */while(SPI_GET_RX_FIFO_EMPTY_FLAG(SPI0) == 0)u32RecvData_spi = SPI_READ_RX(SPI0);printf("3\n");}
}
void SPI0_Init(void)
{SPI_Open(SPI0, SPI_SLAVE, SPI_MODE_0, 8, NULL);//SPI_SET_LSB_FIRST(SPI0);////SPI_SET_SUSPEND_CYCLE(SPI0, 16);//SPI_SET_DATA_WIDTH(SPI0, 24);//SPI_SET_LSB_FIRST(SPI0);//SPI_DISABLE_BYTE_REORDER(SPI0);//SPI_ENABLE_BYTE_REORDER(SPI0);//SPI_DISABLE_DUAL_MODE(SPI0);//SPI_ENABLE_3WIRE_MODE(SPI0);/* Enable TX FIFO threshold interrupt and RX FIFO time-out interrupt */SPI_EnableInt(SPI0, SPI_FIFO_TX_INT_MASK | SPI_FIFO_TIMEOUT_INT_MASK);NVIC_EnableIRQ(SPI0_IRQn);SPI_EnableFIFO(SPI0, 0, 0); //开启FiFo模式,这个很重要。
}
2、在SYS_Init()中,需要使能相关的IP时钟:
CLK_EnableModuleClock(SPI0_MODULE);
CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_HCLK, MODULE_NoMsk); //外部晶振
//CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_PLL, MODULE_NoMsk); //内部晶振
3、记得在main()中,调用一下 SPI0_Init();不然没有作用的。 --- VIP here。
---- The End.
Nuvoton M0518 之 Slave SPI通信注意事项相关推荐
- AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项
1.AS5047P硬件设计 1.1 简介.性能参数 AS5047P 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行高速(高达 28krpm)角度测量.这种新型位置传感器配备了革命性的 ...
- TLE5012B ESP32驱动程序、硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出
一.TLE5012B 简介 TLE5012B 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行角度测量. 它通过使用单片集成 巨磁阻 (iGMR) 元件,来测量正弦和余弦角分量,这些原 ...
- CC3200 与 CC2530的SPI通信
目的:实现CC2530作为master,CC3200作为slave的SPI 通信 连接图如下 /*--------------------------– Master Slave ----- ---- ...
- Arduino(3) Mega2560和外部设备SPI通信
前言 这篇文章主要讲Arduino串行通信里的SPI通信.SPI(Serial Peripheral Interface,串行外设接口)高速通信接口一般用在于对于数据量要求比较大的设备或者场景里,例如 ...
- STM32——SPI通信
文章目录 一.SPI通信 二.硬件电路 三.移位示意图 四.SPI时序基本单元 交换一个字节(模式0)[用的多] 交换一个字节(模式1) 交换一个字节(模式2) 交换一个字节(模式3) 五.SPI时序 ...
- 基于FPGA的 SPI通信 设计(1)
引言 低速通信目前搞过 UART串口通信.IIC通信.其实 SPI 也算是中低速(有时也可以用作高速通信)串行通信的范畴,但是一直还没真正实现过,所以此系列就 SPI的协议以及FPGA设计作几篇博客记 ...
- Zigbee(cc2530)和STM32 SPI通信,温度采集,组网
实验板子: 1. zigbee底板3块(1终端.1路由.1协调器,均基于CC2530) 2. stm32核心板(采集温度) 说明:下面的程序都是在TI官方例程SampleApp工程下面进行的更改.Z- ...
- STM32F107RCTx SPI通信
一.Cube设置 第一章Cube设置 相比第一章的新增加的设置 1.Pinout&Configuration->Connectivity->USART1 : Mode->As ...
- ARM与射频芯片TRF796x的SPI通信研究
针对TRF7960 SPI 接口缺乏标准协议的特点,提出了SPI器件之间通信的一般方法.论文阐述了ARM 芯片内置SPI硬件控制器的工作原理和时序,并对射频芯片 TRF7960x的工作模式与读写要求进 ...
- Raspberry Pi 与Arduino SPI通信
本教程介绍了使用SPI(串行外围设备接口总线)进行Raspberry Pi与Arduino通讯和控制的基本框架. SPI代表了一种非常完善的芯片间通信方法,该方法在两种设备的硬件中均实现. 在这里,我 ...
最新文章
- Java 集合框架(二)—— ArrayList
- 用了三年 ThreadLocal 今天才弄明白其中的道理
- SVN中trunk、branch、tag区别
- 一本关于 女仆小说的构思,有能力写的看下
- jmeter中生成UUID作为唯一标识符
- 桌面云计算机的配置,Citrix桌面云实验环境的部署配置
- php 数据类型转换与比较
- java有哪些类_Java中常用的类有哪些?
- fiddler运行原理_fiddler工作原理
- Thymeleaf 生成静态化模板
- 《人类简史》笔记——认知革命和农业革命背后的思考
- “麻将换皮”的《刀塔自走棋》会是下一个“吃鸡”吗?
- 用户使用报告_分享最新2020年抖音用户画像报告
- SpringBoot2.0(九):实现微信授权登录并且获取用户信息
- 单片机c语言交通灯源程序,基于80C51单片机的交通灯C语言源程序
- OpenHarmony成长计划学生挑战赛解读
- [C++]稀疏矩阵(一维数组描述)
- Android自定义九宫格密码解锁
- Linux比较重要命令使用总结
- Android Paint绘制动态心电图效果