在嵌入式产品的开发中少不了各种外围设备的搭配使用。嵌入式开发中需要做到将加入系统的外设连接起来,并能够完成所需要的功能开发。
在众多的设备中,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,所以延时等待在很多时候都很有必要。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
嵌入式
+关注
关注
5063文章
18990浏览量
302462 -
外设
+关注
关注
0文章
33浏览量
11671 -
系统
+关注
关注
1文章
1006浏览量
21301
发布评论请先 登录
相关推荐
嵌入式NVM在应用中要注意什么?
工艺兼容、功耗及成本控制等新的问题。为此,本文以一款电力网控制芯片R36的物理设计为例,讨论了嵌入式NVM在实际应用中需要注意的问题,并给出了解决方案。
发表于 11-04 06:55
嵌入式系统工程化设计要注意哪些方面
计算机设计,提高可靠性有那些方面工程化要求?设计要注意那些方面?下面按照两个方面来介绍,一,把嵌入式计算机简化到最简化模型,看看需要注意那些方面。二,面对
发表于 11-08 06:51
PCB工程师需要注意的地方
PCB工程师需要注意的地方:PCB工程师需要注意的地方较多的PCB工程师,他们经常画电脑主板,对Allegro等优秀的工具非常的熟练,但是,非常可惜的是,他们居然很少知道如何进行阻抗
发表于 09-13 10:45
•0次下载
设计嵌入式系统硬件电路时需要考虑哪些问题
设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个特别要注意的问题。
嵌入式硬件设计中需要注意的事项
我们知道,CPU是这个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。
发表于 06-19 11:30
•871次阅读
嵌入式里有关时序波形的测量需要注意的地方
在嵌入式产品的开发中少不了各种外围设备的搭配使用。嵌入式开发中需要做到将加入系统的外设连接起来,并能够完成所需要的功能开发。
发表于 05-20 15:41
•804次阅读
评论