• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

如何调试在GPIO上的数据采集

FEItwo 2018-10-13 浏览量:992
想请教大家如何调试在GPIO上的数据采集。事情是这样的。
有一个第三方设备会连接开发板上的某个GPIO, 在上面以某个自定义协议发送数据,类似于UART。
开发板这边根据协议实现读取这些数据的程序。 数据是由特定的帧构成的。调试阶段帧的内容可以是固定。
我用的是keil开发环境,需要在开发板上调试来读取这些从GPIO来的数据。
现在遇到的困难是,如果想单步调试数据读取,当停到断点时,debug的数据已经在GPIO上发送完了。
如果加printf跟踪调试,又会影响读取数据程序的时序。

请问有经验的伙伴都是怎么实现软件单步调试的?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 数据读取可以使用中断的方式,防止其他函数的影响

    可以使用逻辑分析仪或是示波器来辅助捕获GPIO上的信号来分析数据的正确性

    • 发布于 2018-11-06
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:17
  • 这个更类似于dht11或者ds18b20这种单总线串行通信,可以参考类似的程序。一般需要发送帧开始,然后设备端会发送数据帧。所以用单步调试并不合适,重点是要控制好时序。
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 2
    • 0

  • 可以用逻辑分析仪先读取波形时序,按照时序写出读取程序,调试的时候不要打断点,在监视窗口实时查看数据,看数据是不是正确
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 现在问题是你如何用IO口接受这些协议的数据,这个是关键,
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 加入状态变量,把数据压入缓冲区。缓冲一定量再用串口打出来
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 借助其它闲置IO口输出电平,用示波器监测就可以知道程序哪里没有跑对了。
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 1
    • 0

  • 把调试信息写入ram缓存,等cpu空闲用串口发送调试信息
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 你断点的位置不对 要下到发送函数里
    • 发布于2018-10-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果发送的数据准确且不太复杂的情况下可以自己写个程序模拟发送端口,通过案件控制发送,或者在通讯协议里加入应答机制
    • 发布于2018-10-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以将读取到的数据保存在一个全局型的数据结构中这样调试时就可以同步查看到接收的数据值了.

    • 发布于2018-10-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议通过逻辑分析仪来调试,毕竟是看不见摸不着的东西

    通过逻辑分析仪,可以在屏幕上看见具体的波形变化

    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 要用逻辑分析仪来进行分析,这种数据变化非常快,只有这种方法方便调试
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的断点最好这样打,在收到多少个数据之后,使用一个赋值什么的,这时在那里打断点,就能看到多个数据了
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种方式建议用串口打印来调试,断点调试不适合现在的场景
    • 发布于2018-10-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 加printf怎么会影响数据读取时序呢,你读完一个数据,单片机判断通信完成再printf,是不会影响读取时序的。
    • 发布于2018-10-31
    • 举报
    • 评论 0
    • 0
    • 0

  • GPIO的协议总线,主要的就是时序的问题了,可以使用分析仪进行分析
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个时序是没有问题的,主要检查一下你的数据是否有错误的情况
    • 发布于2018-11-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个应该是串口打印函数的问题,要重点排查一下重映射
    • 发布于2018-11-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

如何调试在GPIO上的数据采集