历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2020年02月04日 | AVR单片机通讯用发送标识UDRE与TXC的区别

2020-02-04 来源:eefocus

AVR的说明书上说:


“TXC标志位可以用来检验一个数据帧的发送是否已经完成,RXC标志位可以用来检验接收缓冲器中是否还有数据未读出。在每次发送数据之前(在写发送数据寄存器UDR前)TXC标志位必须清零。”


“数据寄存器空UDRE标志位表示发送缓冲器是否可以接受一个新的数据。该位在发送缓冲器空时被置"1”;当发送缓冲器包含需要发送的数据时清零。”


“当整个数据帧移出发送移位寄存器,同时发送缓冲器中又没有新的数据时,发送结束标志TXC置位。TXC在传送结束中断执行时自动清零,也可在该位写"1”来清零。”


看完上述的说明之后,我一直疑惑在发送数据时,是不是要同时进行两种操作:


1、判断UDRE为1。


2、清除TXC标识。


但是在网上见到的实用程序中,并没有上面的第二项操作,似乎也可以行得通。带着这个疑惑,我在网上搜到了一个比较好的回答:


“关于AVR的串口,解释如下:


对于发送,有一个UDR缓冲寄存器,还有一个移位寄存器。当你写一次UDR时,单片机会立即把这个数据转到移位寄存器,所以你还可以立即写第二个数据。以后每当UDR缓冲寄存器空的时候,就会产生UDRE中断,而要产生TXC中断,就必须等移位寄存器的数据都发送完毕后才会产生。


对于接收,有两个UDR缓冲寄存器,还有一个移位寄存器。两个接收缓冲器相当于一个FIFO结构。当有数据接收时,如果一个完整的数据被接收到移位寄存器,会将其转到缓冲寄存器。这样会产生RXC中断。


AVR和51不同,这样的结构会更好。例如当你的程序很忙在另外一个中断里,这时有串口接收数据。两个缓冲器会为你赢得时间,而不会丢失数据。发送数据也一样。而51就不是这样的。”


“如果连续写两个缓冲器数据时,因为刚写缓冲的一个数据被移位到了移位寄存器,所以可以立刻再写一个数据。就是说UDRE置位时,单片机还有一个字节在移位寄存器里正在发送。”


结论就是:


常见的循环发送程序(即只判UDRE而不判TXC的发送程序)可以工作,究根结底在于发送数据的连续性:即起始时TXC=0,满足发送条件;而连续发送数据时,因为UDRE置位时,而移位寄存器中仍有数据在发送,故TXC没有置位,也满足发送条件。直到全部数据发送完成,移位寄存器和发送缓冲器都没有数据后,TXC才置位。


需要注意的是:


1、如果之前发送过一轮数据后,再次发送时,必须清除TXC标识,即对该位写“1”。最好是在一轮数据发送完成后检测TXC标识将其清除。


2、如果采用了发送完成中断,则不必手动清除,因为进入发送中断程序后,硬件可自动清除TXC标识。


3、如果不使用中断发送而采用循环发送时,发送过程中因其他中断的缘故,使发送程序暂停超过了一定时间的话,就会导致移位寄存器中的数据发送完成后置TXC标识位,则之后的发送就无法进行了。


4、如果采用485进行通讯,只有在检测到TXC置位时才改变485的状态。因为只有TXC置位时,才代表发送过程的完成。


我认为比较好的发送程序如下:


void uart_putchar(unsigned char c)


{


while(!(UCSR0A&(1<


if(UCSR0A&(1<


UCSR0A|=(1<


UDR0 = c;


}


推荐阅读

史海拾趣

Anaheim Automation公司的发展小趣事

2005年,AMOTECH被Deloitte评为“亚太技术500强”,这进一步提升了公司在国际上的知名度和影响力。同年,公司还获得了ISO14001认证,这体现了公司对环境保护的重视和承诺。随着业务的不断拓展,AMOTECH在2006年和2008年分别建立了青岛办公室和韩国第四工厂,进一步提升了公司的产能和效率。

Chiefdom Electronic Co Ltd公司的发展小趣事

在市场竞争日益激烈的情况下,Chiefdom Electronic Co Ltd注重创新营销策略,以吸引更多消费者的关注。公司推出了一系列具有针对性的广告宣传活动,利用社交媒体、网络直播等新媒体渠道进行广泛传播。同时,公司还积极参与各类电子展会和论坛,展示其最新技术和产品,与潜在客户建立联系。这些创新营销策略使得公司的品牌知名度和美誉度不断提升,进而带动了销售业绩的稳步增长。

Comax Industrial Co Ltd公司的发展小趣事

在电子产品市场竞争日益激烈的背景下,Comax Industrial Co Ltd公司始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料的采购到生产制造的每一个环节都进行严格把控。通过持续改进和优化生产流程,公司不断提升产品的品质与性能。这种对品质的执着追求,使得Comax的产品在市场上赢得了广泛的认可与信赖。

Alliance Fiber Optics Products Inc公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,AFOP始终保持着创新的精神和敏锐的市场洞察力。公司不断投入研发力量,探索新的技术方向和产品应用。同时,AFOP还注重人才培养和团队建设,吸引了一批高素质的研发人员和管理人才,为公司的未来发展奠定了坚实的基础。

这五个故事展示了AFOP从创立到发展壮大的历程,体现了公司在技术创新、市场拓展和资源整合等方面的努力和成就。随着电子行业的不断发展和技术的不断进步,相信AFOP在未来会继续保持领先地位,为光网通信领域的发展做出更大的贡献。

远东福斯特公司的发展小趣事

随着技术的不断进步,AFOP在光纤元件领域取得了重大突破。公司成功研发出一系列高品质的光纤元件和集成模块,如波分复用光电二极管、光衰减器等,这些产品在光网通信领域具有广泛的应用。同时,AFOP还注重产品升级和迭代,根据市场需求和客户反馈,不断优化产品性能和质量,赢得了客户的广泛认可。

APM Hexseal公司的发展小趣事

在军队取得初步成功后,APM Hexseal的产品开始进入工业和商业市场。其硅胶密封套系列可与世界各地使用的绝大多数开关、断路器、编码器、电位计和其他旋转设备配合使用,得到了广泛的认可和应用。无论是航空电子、仪器仪表、通讯还是建筑、船舶、医疗等行业,APM Hexseal的产品都发挥着重要的作用。

问答坊 | AI 解惑

MAX485通信同步问题?求解???

       初次搞485的多机通信(一主多从),现在遇到的问题令我很困惑。        我的通信思路是,从机逐个与主机通信,即主机发送一帧数据(8字节,包含数据信息),呼叫从 ...…

查看全部问答>

新手提问:学习单片机需要有多少电气知识?

我大学里是学软件的,对C#之类的比较熟,C/C++也还行,汇编了解一些,电气电路和硬件几乎一点不懂。 现在有个工作是从事激光仪器里的单片机开发,请问需要学习多少电气知识?线路应该有人设计好的,我写程序要看懂电路吗?有哪里方面是要与设计电 ...…

查看全部问答>

对话框最小化就不见了。

ce5.0 evc4.2. 我要在对话框中加个最小化按钮,用ShowWindow(SW_MINIMIZE)来实现,但对话框最小化就不见了.而在xp系统中就行。 感觉是任务栏没有显示,造成最小化后程序不能回到任务栏,所以不见了。 …

查看全部问答>

一个简短程序放在AT89C55WD中好象不工作了,是否与程序有关?

问题1: 全部程序如下: #include sbit Fscx = P3^4; sbit CW   = P3^5; void main() {    int i;    CW = 0;    while(1)    {        Fscx = 1;   ...…

查看全部问答>

关于wince6的网络组件

请问ce6在定制系统时在网络组件时有没有什么地方要注意的?我在定制完烧录到目标板后系统中始终出不来以太网连接。 communication service and networking下面的WAN和LAN均已经选择,BSP中的eth drv也选了,可是编译后启动系统就是看不到网络连接 ...…

查看全部问答>

eZ430-学习心得(一)

之前也没学习过MSP430,今天大致了解了一下MSP430F2274的大体结构,找了下资料,只找到利尔达翻译的中文资料,详细关于寄存器介绍说明的还没有找到。先从时钟分享下我的心得,这款芯片有三个时钟,低速的辅助时钟ACLK,用于低速外设比如串口模块,S ...…

查看全部问答>

PCB板前期定位注意

  上周周一(6月13号)开始为一块电路板做定位工作,由于自己没有详细考虑PCB设计时的显示位置与实际模具的接口的位置关系,导致周二、三、四的布局布线工作全都白做了,实在是悲惨,只能怪自己前期考虑的不周,这也算是一次学习的机会吧 ...…

查看全部问答>

求10M晶振的型号和厂家

各位大侠,谁用过10M恒温晶振啊,体积和功耗均尽量小一点,麻烦推荐几个型号啊,谢谢啦:…

查看全部问答>

欢迎下载德仪2012年电源管理指南

这套电源管理方案指南中提供了线电源和移动设备电源的全套解决方案,而且设计目前TI最新的产品系列,对于电源方案的制定非常有参考意义。 [ 本帖最后由 wstt 于 2012-6-16 00:43 编辑 ]…

查看全部问答>

【Nucleo+BLUENRG心得】—— 验身

   今天早上刚到公司打卡看到EEWORLD寄来的快递 估计就是蓝牙板  迫不及待拆开看一下 比想象中小不少 这样可能看不出来 这样就能感觉出mini了吧 简单上个电 看下功耗 2.367mA 应该主要是有源晶振的功耗 晚 ...…

查看全部问答>