物理链路层的通信协议调试

背景

在使用底层通信协议的时候,常会遇到一些问题,那么如何调试,应该考虑一些什么问题,就很值得思考,对底层协议的调试应从以下几个方面入手

其实首先应该考虑的是


换一个设备再试试,也许就是设备问题


合规的电源

应满足通信双方的电源需求,电压,可提供的功率等,避免通信过程中受电源的影响,这类其他器件的问题往往是难以考虑到的,不希望出现拍头才会有的大悟,浪费的时间不值得

  1. 电源的电压,可提供的功率
    应注意电压是否满足要求通信双方的要求,同时应注意通信时双方支持的电压是否一样,考虑隔离措施,电平标准间的转换措施,同时应注意电源可提供的最大功率,是否满足刷个双方通信的需求
  2. 电源的稳定性
    电源再不同功率下的纹波(主要是大电流下,接近芯片满功率时的纹波),,请确保电源的稳定
  3. 电源的动态响应
    在通信功率突然增大,或有其他负载的突然增大,可能会有电源补偿不及时,倒是在瞬时电压低于要求的电压,引起设备重启,也可能会有过补偿,导致出现超过可承受的电压,会有烧毁设备的风险
  4. 是否需要供地 ,参考地的漂移
    很多时候,通信双方需要有同一个地平面作为参考,而地平面流过比较大的电流时,会有不同程度的压降,取决于电流通路的载流能力(通路最窄处,板材线材阻抗),参考地保持抬高或者拉低其实影响不太大,更严重的危害在于,地平面由于电流方向大小的变化,产生了波动,不断漂移震荡

信号完整性

高频滤通信,或者在一些不太好的电磁环境下,或者pcb画得不太好,回事高低电平跳变的时候,产生 下冲、过冲、振铃等,常由于以下几个原因

  1. 阻抗未匹配
    ● 信号出现过冲,下冲,振铃等现象,其实就是阻抗的不连续而产生的反射,多次反射叠加在一起就形成了震荡
  2. 被强信号干扰
    ● 信号毛刺
    ● 随着其他信号波动而波动
  3. 线路阻抗过大,(分布电感,分布电容,线材电阻率过高,线路过长)
    ● 高电平/低电平建立时间过长
    ● 高电平时电压低,低电平时电压过高(不符合ttl电平、RS485电平未反转)

mcu/soc的通信配置

一些细节问题往往会被忽视,以下是需要考虑的一些问题

  1. gpio 配置
    是否需要内部配置上下拉电阻,开漏推挽,复用等,或者外部配置上下拉电阻,甚至在一些单片机中,可以配置上下拉电阻的阻值
  2. 考虑使用软件模拟 /硬件模块 来进行通信
    在近些年的国产mcu中均可见一斑,例如灵动等,使用芯片自带的spi,iic等片上外设时,其信号完整性往往比较差,甚至相比于pwm,示波器上的波形更难看,在使用软件gpio模拟时,往往会有更好的效果,不妨尝试。
  3. 启动时时钟信号
    在使用一些有时钟信号的通信协议时,是否需要为另一台设备提供时钟信号供其完成初始化或者唤醒,例如内存卡使用spi通信时,需要接近一百个时钟
  4. 通信速率
    太高的的bit传输速率可能会使通信另一方给应接不暇而无法响应,也会使信号完整性上欠考虑的问题爆发

程序正确性

有可能程序与设备的版本并不能匹配,或者设备所需要特定信号,有特定要求,而不能完成通信,应该考虑如下几个方面

  1. 地址(ID)及特殊处理
    在涉及到设备通信双方在总线上的地址时,需要再三核对地址(ID)是否正确 ,同时会有一些其他要求,举个栗子,左移右移添加读写位,crc校验…
  2. 通信的间隔
    通信太频繁,间隔时间太短可能会导致通信中的另一方来不及处理而无法回应,或者回应错误数据
  3. 设备的初始化命令
    很多设备需要发送一些命令来使通信的另一方完成一些动作,从而进入我们所期望的工作状态,请确保这些命令的正确性,同时请注意软件版本以及硬件版本

遇到了新的问题接着写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林夕不夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值