|
我的硬件是STM32F401RCT6通过SPI连接 16 位 SPI ADS8319采集模拟光强信号,由线性 CCD TCD1304(3694 像素)读取光强,以测量机械位移。采集完成后,数据必须通过串口发送出去。 我将应用功能分为两个互不干扰的阶段: ADC 采集阶段:打开 ADC 触发,SPI 更新数据数组 串口发送阶段:关闭 ADC 触发,SPI 不工作,UART 发送数据 TIM3上升沿启动 ADC 转换,下降沿触发中断 中断服务程序向 SPI-DR 写入一个固定值,触发 SPI 产生时钟 SPI 配置为全双工主机,硬件 NSS,16 位,10.5MHz 时钟,RXNE(接收非空)中断 写入 DR 后,SPI 产生时钟,ADC 通过 MOSI 输出结果 SPI 接收完成后触发 RXNE 中断,将 DR 值复制到数据数组 当接收计数到 0 时,设置标志位,主循环通过 DMA 发送数据 调试器表现异常:例如运行时无法进入 main () 的 while 循环断点。 通过观察 SPI 状态寄存器,我发现SPI 在使能后立即从主机模式变成了从机模式。查阅参考手册后发现我配置错误:MSTR=1,BIDIMODE=1,BIDIOE=1,SSOE=1这个组合会让 SPI 进入仅发送模式 + 主机模式故障状态。 ADC 需要 SPI 为从机、仅接收模式,由外部提供时钟。我找到的解决方法是:使用第二个 SPI 作为主机仅发送模式,用它的时钟供给从机 SPI。 我实现了这个新方案,逻辑分析仪信号看起来正常,但仔细观察发现:ADC 数据出现了一位偏移。 |
F407的SDIO的硬件分流问题
workbench5.3.1生成代码问题
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
STLink下载程序失败,Flash部分地址不能写入
求助,局部变量初始化时未赋值会导致什么后果?
TIM11,TIM13失效
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
微信公众号
手机版