使用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通信注意事项相关推荐

  1. AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项

    1.AS5047P硬件设计 1.1 简介.性能参数 AS5047P 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行高速(高达 28krpm)角度测量.这种新型位置传感器配备了革命性的 ...

  2. TLE5012B ESP32驱动程序、硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出

    一.TLE5012B 简介 TLE5012B 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行角度测量. 它通过使用单片集成 巨磁阻 (iGMR) 元件,来测量正弦和余弦角分量,这些原 ...

  3. CC3200 与 CC2530的SPI通信

    目的:实现CC2530作为master,CC3200作为slave的SPI 通信 连接图如下 /*--------------------------– Master Slave ----- ---- ...

  4. Arduino(3) Mega2560和外部设备SPI通信

    前言 这篇文章主要讲Arduino串行通信里的SPI通信.SPI(Serial Peripheral Interface,串行外设接口)高速通信接口一般用在于对于数据量要求比较大的设备或者场景里,例如 ...

  5. STM32——SPI通信

    文章目录 一.SPI通信 二.硬件电路 三.移位示意图 四.SPI时序基本单元 交换一个字节(模式0)[用的多] 交换一个字节(模式1) 交换一个字节(模式2) 交换一个字节(模式3) 五.SPI时序 ...

  6. 基于FPGA的 SPI通信 设计(1)

    引言 低速通信目前搞过 UART串口通信.IIC通信.其实 SPI 也算是中低速(有时也可以用作高速通信)串行通信的范畴,但是一直还没真正实现过,所以此系列就 SPI的协议以及FPGA设计作几篇博客记 ...

  7. Zigbee(cc2530)和STM32 SPI通信,温度采集,组网

    实验板子: 1. zigbee底板3块(1终端.1路由.1协调器,均基于CC2530) 2. stm32核心板(采集温度) 说明:下面的程序都是在TI官方例程SampleApp工程下面进行的更改.Z- ...

  8. STM32F107RCTx SPI通信

    一.Cube设置 第一章Cube设置 相比第一章的新增加的设置 1.Pinout&Configuration->Connectivity->USART1 : Mode->As ...

  9. ARM与射频芯片TRF796x的SPI通信研究

    针对TRF7960 SPI 接口缺乏标准协议的特点,提出了SPI器件之间通信的一般方法.论文阐述了ARM 芯片内置SPI硬件控制器的工作原理和时序,并对射频芯片 TRF7960x的工作模式与读写要求进 ...

  10. Raspberry Pi 与Arduino SPI通信

    本教程介绍了使用SPI(串行外围设备接口总线)进行Raspberry Pi与Arduino通讯和控制的基本框架. SPI代表了一种非常完善的芯片间通信方法,该方法在两种设备的硬件中均实现. 在这里,我 ...

最新文章

  1. Java 集合框架(二)—— ArrayList
  2. 用了三年 ThreadLocal 今天才弄明白其中的道理
  3. SVN中trunk、branch、tag区别
  4. 一本关于 女仆小说的构思,有能力写的看下
  5. jmeter中生成UUID作为唯一标识符
  6. 桌面云计算机的配置,Citrix桌面云实验环境的部署配置
  7. php 数据类型转换与比较
  8. java有哪些类_Java中常用的类有哪些?
  9. fiddler运行原理_fiddler工作原理
  10. Thymeleaf 生成静态化模板
  11. 《人类简史》笔记——认知革命和农业革命背后的思考
  12. “麻将换皮”的《刀塔自走棋》会是下一个“吃鸡”吗?
  13. 用户使用报告_分享最新2020年抖音用户画像报告
  14. SpringBoot2.0(九):实现微信授权登录并且获取用户信息
  15. 单片机c语言交通灯源程序,基于80C51单片机的交通灯C语言源程序
  16. OpenHarmony成长计划学生挑战赛解读
  17. [C++]稀疏矩阵(一维数组描述)
  18. Android自定义九宫格密码解锁
  19. Linux比较重要命令使用总结
  20. Android Paint绘制动态心电图效果

热门文章

  1. springboot + vue + FastDFS实现文件上传(支持预览)
  2. android读取剪切板的方法,Android获取粘贴板内容
  3. GeoGebra官方版下载
  4. 两个指定顶点之间最短路问题Lingo解法
  5. 页面视觉稳定性之优化CLS
  6. win7电脑麦克风有电流声怎么办
  7. Hadoop1.0,2.0,3.0区别
  8. 【机器学习】简单关联分析算法-Apriori algorithm
  9. Win10电脑系统使用技巧
  10. Hulu:视频广告系统中的算法实践