0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式里有关时序波形的测量有哪些需要注意的地方

汽车电子技术 来源: 嵌入式之入坑笔记 作者:嵌入式入坑笔记 2023-02-10 10:49 次阅读

嵌入式产品的开发中少不了各种外围设备的搭配使用。嵌入式开发中需要做到将加入系统的外设连接起来,并能够完成所需要的功能开发。

在众多的设备中,MCU与外设进行通信都是按照一定的协议进行的,都涉及到时序,只有按照约定好的协议才能进行通信。



比如,常见的 1-Write单总线、IIC总线、SMBus总线、SPI总线等等的协议,都是需要在约定的通信协议下才能完成通信。而通信协议的实现反馈到MCU的时候,就只是一种IO口电平的变化输出,以及外设传送数据到MCU也是一种电平的变化或者是电平的时间宽度变化。



笔者在项目开发中就遇到过和外设通信中需要测量波形的变化确认数据状态的情况,遇到过一些小问题,随即记录下来分享一下调试心得,也做一个备忘。



情况是这样,项目开发中,有一个外设需要加入到系统中,这个外设是由生产厂商规定好了通信协议的,收发数据都要按照协议的规定进行,MCU接收数据的规定如下:

图片

在通信总线上的低电平期间,有20mA的电流变化时外设回复数据“1”,没有电流变化为数据“0”。



    电流的变化通过硬件电路转换成电压的变化,MCU通过AD检测进行判断,从而得知数据的变化状态。按照我们思路,MUC在低电平期间检测到电流的变化启动AD检测,根据AD值确认数据状态。如下图示:

图片

伪代码示意如下:
while( !GPIO_Check_Pin )  // 通过电平变化确定电流变化
{
    uint_32 adValue = 0;
    if( GPIO_Check_Pin )
    {
        adValue = getAdValue();  // 读取AD值
        if(adValue > x)
            xxx;
    }
}
一般到这里认为应该也就算是完成了,可是在实际测试中发现,获取得到的AD值跟电路上实际的电压是有很多的出入的,测量总是不准确。



    苦思冥想,多次测量之后发现,原来跟时序的变化有关。原因到底什么呢?



原来,正常的想法都是波形变化之后进行测量,而没有考虑过波形的变化在不同的处理器上差异,以及硬件本身的延迟,往往不会立即就能发生翻转的,有一个变化的过程的。



    比如,理想的时序波形变化是这样的:

图片

然而,实际的时序波形变化是这样的:

图片

所以,在波形发生变化的时候就进行测量,很多时候往往得不到正确的结果,可以测量的电位点都不对,测量发生在了电平变化的期间。

图片

所以,要准确测量,合适的方法是等待一段时间,电平变化稳定之后再进行测量,结果就更加证实准确。如下:

图片

所以,伪代码示意如下:
while( !GPIO_Check_Pin )  // 通过电平变化确定电流变化
{
    uint_32 adValue = 0;
    if( GPIO_Check_Pin )
    {
        delay();
        adValue = getAdValue();  // 读取AD值
        if(adValue > x)
            xxx;
    }
}
很多的嵌入式系统中,考虑到成本、工艺、实用性等的因素,很多的处理器都不会实用很强大的MCU,主频可能都比较低,性能有限,很多的外设反应速度可能也不及MCU,所以延时等待在很多时候都很有必要。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19115

    浏览量

    304898
  • 外设
    +关注

    关注

    0

    文章

    40

    浏览量

    11694
  • 系统
    +关注

    关注

    1

    文章

    1016

    浏览量

    21334
收藏 人收藏

    评论

    相关推荐

    嵌入式系统电源设计中需要注意哪些事项?

    嵌入式系统电源设计中需要注意哪些事项?遵循哪些原则?
    发表于 08-01 06:58

    嵌入式NVM在应用中要注意什么?

    工艺兼容、功耗及成本控制等新的问题。为此,本文以一款电力网控制芯片R36的物理设计为例,讨论了嵌入式NVM在实际应用中需要注意的问题,并给出了解决方案。
    发表于 11-04 06:55

    嵌入式硬件设计时需要注意哪些事项?

    嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,咱们了解下嵌入式的硬件构架。
    发表于 03-09 08:36

    设计嵌入式硬件时需要注意哪些问题?

    嵌入式开发项目中,首先需要做需求分析,然后根据需求分析进行综合考虑,这里给出几个嵌入式硬件设计时特别要注意的问题。
    发表于 03-11 07:21

    嵌入式系统设计时需要注意的技术要点和实现细节哪些?

    为什么需要safe mode?嵌入式系统设计时需要注意的技术要点和实现细节哪些?
    发表于 04-25 08:49

    嵌入式软件安全设计理念是什么?什么注意事项?

    嵌入式软件安全设计理念是什么?嵌入式软件设计需要注意什么问题?
    发表于 04-27 06:51

    部署光纤什么需要注意地方

    部署光纤什么需要注意地方?如何去选购光纤?
    发表于 05-28 07:19

    嵌入式系统工程化设计要注意哪些方面

    计算机设计,提高可靠性那些方面工程化要求?设计要注意那些方面?下面按照两个方面来介绍,一,把嵌入式计算机简化到最简化模型,看看需要注意那些方面。二,面对
    发表于 11-08 06:51

    PCB工程师需要注意地方

    PCB工程师需要注意地方:PCB工程师需要注意地方较多的PCB工程师,他们经常画电脑主板,对Allegro等优秀的工具非常的熟练,但是,非常可惜的是,他们居然很少知道如何进行阻抗
    发表于 09-13 10:45 0次下载

    PCB工程师需要注意地方

    PCB工程师需要注意地方   较多的PCB工程师,他们经常画电脑主板,对Allegro
    发表于 04-16 22:14 1597次阅读

    PCB工程师需要注意地方

    PCB工程师需要注意地方,在PDF中有很多值得关注的地方
    发表于 11-20 16:21 0次下载

    设计嵌入式系统硬件电路时需要考虑哪些问题

    设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个特别要注意的问题。
    的头像 发表于 02-13 16:32 3982次阅读

    嵌入式硬件设计中需要注意的事项

    我们知道,CPU是这个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。
    发表于 06-19 11:30 888次阅读

    嵌入式设计需要注意什么问题

    这些嵌入式系统必须长期使用相同的电源供电,才能降低反复出现的维护成本或避免最终用户频繁更换电源。
    发表于 10-23 15:56 871次阅读
    <b class='flag-5'>嵌入式</b>设计<b class='flag-5'>需要注意</b>什么问题

    嵌入式有关时序波形测量需要注意地方

    嵌入式产品的开发中少不了各种外围设备的搭配使用。嵌入式开发中需要做到将加入系统的外设连接起来,并能够完成所需要的功能开发。
    发表于 05-20 15:41 832次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>里</b><b class='flag-5'>有关</b><b class='flag-5'>时序</b><b class='flag-5'>波形</b>的<b class='flag-5'>测量</b><b class='flag-5'>需要注意</b>的<b class='flag-5'>地方</b>