你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

无法通过 SPI 读取 TCD1304数据

[复制链接]
patch1582 提问时间:2026-5-21 16:39 / 未解决

我的硬件是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 数据出现了一位偏移。

收藏 评论0 发布时间:2026-5-21 16:39

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版