完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
问题描述:
~30 字节消息中的 1-2 个字节(通常在消息中的同一位置)有时会丢失。通常是第 13 个字节。 如果我通过 SPI 发送更短的消息,比如 10 个字节,对方会正确接收它们。 如果我在将 NSS 拉低后等待 50us,对方甚至可以正确接收到长消息。 让我们假设,在将 NSS 拉低后,传输开始得太早。为什么 msg 中间的一个字节会丢失,而不是在开头? 也许这是一个振荡的 NSS 引脚,它变高/变低,但我在示波器上看不到任何东西。我知道探头会增加走线的电容,因此任何信号上升都会变慢,并且只需连接探头即可抑制任何振荡。 暂时修复: 将 NSS 拉低后等待 50us。 问题一: 但我不明白为什么修复有效......这对我来说毫无意义。NSS 在大约 200ns 内变高/变低(使用探头测量,超短 GND 连接)。不同的测量显示 1300ns(探头上有长引线)。 数据表规定 50pF 电容为 320ns。所以第一次测量应该没问题。200ns 大约是 3 个时钟周期。 我初始化一个 60 字节的数组,并在将 NSS 拉低后执行一个 30 字节的 memcpy。这应该足以让 NSS 变低。 为什么等待会修复它?为什么中间少了一个字节?一开始不是吗? 问题2: 为什么示波器上的MOSI这么坏?为什么我什至可以用这样的 MOSI 图发送正确的消息?见附图。MOSI 的上升时间约为 2.5us。这太长了。为什么?如果是示波器的原因,我会在 SCK、NSS 或 MISO 上看到同样的现象。但我没有。 环境: SPI 速度:8 MHz SPI 模式:主机,全双工 时钟速度:16 MHz 单片机:STM32L0 电源电压:1V8 SCK 迹线:~33mm,800 万 MOSI 迹线:~43 毫米,800 万 SPI GPIO 速度设置:最高速度 NSS 速度设置:低 示波器 输入电容:15pF 探头电容:18-22pF 探头补偿:10-35pF 探头设置:10x |
|
相关推荐
1个回答
|
|
|
通信是在 STM32 和无线电 MCU 之间进行的。有时失败的命令是填充无线电 MCU 的 FIFO 的命令。
可能只有当我在 NSS 被拉低后 MCU 等待时它才起作用的原因可能是,无线电 MCU 需要时间将其模式从 RX 更改为 STANDBY。等待发生在 NSS 被拉低之前还是之后都没有区别。所以 NSS 不是问题所在。 很可能 SPI 通信完好无损,但 FIFO 未正确填充,因为它恰好在接收器模式从 RX 切换到 STANDBY 的那个时间点完成。 尽管如此,我已经将 SPI 速度从非常高降低到很高并保持这种变化,因为它以较低的速度工作,我想避免任何 EMI 或过冲/下冲。 我已经删除了所有等待代码/周期,现在只等待无线电 MCU 的模式更改完成。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1468 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1521 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3668 浏览 1 评论
3860 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2477 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
747浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
680浏览 5评论
726浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
967浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
768浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 14:12 , Processed in 0.725656 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
323