杰发科技AC7840——SPI通信简介(1)_跑通Demo

0. 简介

一些配置项:

CPHA:相序

CPLO:极性

看着demo需要按键,于是去掉按键,去掉打印,直接输出波形看逻辑分析仪的信号。

其实现在做这些demo测试应该都有逻辑分析仪,直接看波形更直观一点。

发现没有波形,而且时钟跟奇怪。看着只有几个信号

原来是采样速率设置太小了,只有500K,于是直接拉到最高50Mhz。

时钟OK,但是数据还是不对

仔细核对代码和配置项之后OK

1. 两个板子互相通信

其中经历了两三个小时的各种问题,包括但不限于线焊错了(PB3焊到旁边的PC14),动来动去PB2松了,MOSI和MISO接反了(我们的代码里面MOSI和MISO不需要互相换,因为使能了从机模式,做从机就是输入主机就是输出Master out slave in)。。。

主机代码修改如下

都是把其他代码屏蔽直接每隔100ms发送数据

cpp 复制代码
ret = SPI_DRV_MasterTransferBlocking(SPI_INSTANCE, g_spiTxBuff1, g_spiRxBuff1, DATA_SIZE, SPI_TIMEOUT); /*! SPI通信 */
OSIF_TimeDelay(100);

从机代码修改如下

cpp 复制代码
        ret = SPI_DRV_SlaveTransferBlocking(SPI_INSTANCE, g_spiTxBuff1, g_spiRxBuff1, DATA_SIZE, SPI_TIMEOUT); /*! SPI通信 */
        OSIF_TimeDelay(100);

主机从机的数组修改了下方便观察

至此SPI0已经跑起来了

2. 修改波特率

如下,测试,时钟源120M,波特率16M没问题,但是实际的时钟频率大概是10M。

波特率设置到到20以上,接收数据就乱了

3. 注意事项

超过2M需要设置为DMA模式:不用中断的原因是,需要频繁进入中断,CPU负载高的时候,SPI会出问题

相关推荐
学嵌入式的小杨同学1 天前
STM32 进阶封神之路(二十七):MQTT 深度解析 —— 从协议原理到 OneNET 云平台接入(底层逻辑 + AT 指令开发)
stm32·单片机·嵌入式硬件·mcu·硬件架构·pcb·嵌入式实时数据库
学嵌入式的小杨同学2 天前
STM32 进阶封神之路(二十五):ESP8266 深度解析 —— 从 WiFi 通信原理到 AT 指令开发(底层逻辑 + 实战基础)
c++·vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件
学嵌入式的小杨同学2 天前
STM32 进阶封神之路(二十六):ESP8266 实战全攻略 ——TCP 通信 + 数据上传 + 远程控制 + 透传模式(库函数 + 代码落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
小白橘颂3 天前
【C语言】基础概念梳理(一)
c语言·开发语言·stm32·单片机·mcu·物联网·51单片机
jianqiang.xue3 天前
嵌入式软件架构设计:从分层思想到状态机实现,打造高可维护、高可移植的工程级代码
c语言·驱动开发·stm32·单片机·mcu·物联网·iot
xu_wenming3 天前
为什么要在项目中加入 ESP‑NN(神经网络)
mcu·物联网·算法·iot
学嵌入式的小杨同学3 天前
STM32 进阶封神之路(二十四):低功耗实战全攻略 —— 电池供电传感器节点(RTC 唤醒 + DHT11 采集 + 功耗优化)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
学嵌入式的小杨同学3 天前
STM32 进阶封神之路(二十三):低功耗深度解析 —— 从睡眠模式到停机模式(底层原理 + 寄存器配置)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
学嵌入式的小杨同学5 天前
STM32 进阶封神之路(二十二):DMA 实战全攻略 ——ADC 采集 + 串口收发 + 内存复制(库函数 + 代码落地)
c++·stm32·单片机·嵌入式硬件·mcu·硬件架构·pcb
学嵌入式的小杨同学5 天前
STM32 进阶封神之路(二十一):DMA 深度解析 —— 从直接内存访问到无 CPU 干预数据传输(底层原理 + 寄存器配置)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件