历史上的今天
返回首页

历史上的今天

今天是:2025年07月27日(星期日)

正在发生

2019年07月27日 | stm32下面控制RS485发送有一定概率出错的情况

2019-07-27 来源:eefocus

环境:stm32 72M时钟 串口波特率9600 RS485芯片 发送的数据每组16byte 

原程序(未修改):


//RS485 发送len个字节

//buf:发送区首地址

//len:发送的字节数

void RS485SendData(u8 *buf,u8 len)

{

    u8 t;

    RS485_TX_EN=1;          //设置为发送模式

    for(t=0;t    {          

        while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   

        USART_SendData(USART2,buf[t]);

    }     

    while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);     

    RS485_RX_CNT=0;

    RS485_TX_EN=0;              //设置为接收模式

}


修改后(串口发送前后都需要延时20us):


//RS485 发送len个字节

//buf:发送区首地址

//len:发送的字节数

void RS485SendData(u8 *buf,u8 len)

{

    u8 t;

    RS485_TX_EN=1;          //设置为发送模式

    for(t=0;t    {          

        while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);  

        delay_us(20); //延时20us

        USART_SendData(USART2,buf[t]);

        delay_us(20); //延时20us

    }     

    while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);     

    RS485_RX_CNT=0;

    RS485_TX_EN=0;              //设置为接收模式

}


总结:串口发送前和发送后都需要延时20us,不然会出现一定概率数据出错的问题,经过多天分析,一直看不准是发送错误还是接受错误,最后快要放弃的时候主从机都修改了,一直修改程序,最后发现这是主从机都需要配合的问题,搞了这么久,终于解决问题了!



推荐阅读

史海拾趣

Autonics公司的发展小趣事

上世纪60、70年代,韩国经济蓬勃发展,工业自动化需求迅速增长,但传感器与控制仪表的国内市场仍是一片空白。Autonics的创始人看到了这个巨大的市场机会,于1977年创立了Autonics公司。公司初创时期,面临着资金短缺、技术落后等诸多挑战,但创始人凭借着对技术的执着追求和对市场的敏锐洞察,带领公司逐步走上正轨。

海芯科技(AVIA)公司的发展小趣事

随着公司业务的不断拓展和市场份额的逐步扩大,海芯科技开始注重品牌建设和市场推广。公司积极参加各类行业展会和交流活动,与业内同行和客户进行深入交流和合作。同时,公司还加大了对品牌形象的宣传力度,通过广告、宣传册等多种方式提升品牌知名度和美誉度。这些举措不仅提升了公司的市场影响力,也为公司的长期发展奠定了坚实的基础。

飞翼科技(FEIYI)公司的发展小趣事

为了进一步拓展业务和提升公司的竞争力,海芯科技积极寻求与行业内外的合作伙伴建立战略合作关系。通过与上下游企业的紧密合作,海芯科技成功实现了产业链的整合和优化,进一步提升了产品的质量和性能。同时,公司还通过与国际知名企业的合作,将先进的技术和管理经验引入到公司内部,为公司的发展注入了新的活力。

Gamma Microelectronics ( APM )公司的发展小趣事

为了进一步满足市场需求,G24i在英国威尔士卡迪夫建成了世界上第一条25MW的大规模生产基于钛衬底的DSSC基地。这一基地的建成标志着G24i在DSSC领域实现了从研发到生产的全链条覆盖。大规模生产不仅降低了产品的制造成本,也提高了生产效率和质量稳定性。G24i通过不断优化生产流程和提升管理水平,确保了产品的市场竞争力。

Glorious Sources Co Ltd公司的发展小趣事
根据实际需要选择合适的扬声器或其他发声装置,并设计相应的驱动电路以确保声音信号的准确输出。
Firadec公司的发展小趣事

背景:随着全球环保意识的增强,绿色电子产品成为了市场的新宠。Firadec公司积极响应环保号召,致力于开发绿色电子产品。

发展:公司投入大量资源研发环保材料和生产工艺,成功推出了一系列符合环保标准的电子产品。同时,Firadec还建立了完善的回收体系,对废旧电子产品进行回收再利用。

影响:环保和可持续发展的理念不仅提升了Firadec公司的品牌形象,也为其赢得了更多消费者的青睐。公司因此在绿色电子产品市场中占据了领先地位。

问答坊 | AI 解惑

求助一个支持snmp的modem的制作问题

用一个嵌入式设备把一个usb的拨号上网设备 用ppp拨号上网,然后通过以太网口提供ppp oe服务,要能够使这个设备能够支持snmp管理,可是拨号上网设备的ip又要能够传给以太网口接着的路由器或者机器。其实就是一个支持snmp的modem。不过那位大侠能帮个 ...…

查看全部问答>

1700语音芯片SPI控制程序

本帖最后由 paulhyde 于 2014-9-15 03:22 编辑 1700语音芯片SPI控制程序,希望能给你带来帮助~~  …

查看全部问答>

wince下TAPI拨号时得问题?

硬件:2410 SIM300D 在wince420使用TAPI拨号时,初始化成功,正常打开线路,能够正常拨打电话 但是在挂断电话得时候,去无任何响应! 监控串口输出也没有任何输出。 请求帮助,谢谢…

查看全部问答>

驱动程序添加设备的问题!???

我在AddDevice函数内,创建了3个设备,用DeviceTree工具是可以看到设备的 但是我怎样在PC的设备管理器内把驱动内创建的设备体现出来???…

查看全部问答>

如何实现交换机的web管理机制?

可以通过浏览器访问交换机的web界面对交换机进行各种参数的设置,请问这种是如何实现的?是不是首先在本地建立好相关函数,然后通过web界面经由web服务器调用这些函数?能详细一些最好,谢谢! …

查看全部问答>

通俗易懂的fpga设计

看看对你有帮助不?…

查看全部问答>

tms320f2812的CAn问题?

使用tms320f2812芯片,在线仿真时CAn运行正常,可烧写到flash后,其他部分运行正常,只有CAN不能通信,这是怎么回事啊?请教大家!…

查看全部问答>

无线扩音器的设计与研究

$(\'swf_Clf\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjY0NzU1MzUy/v.sw ...…

查看全部问答>

keil仿真也限制在32K内吗

C:\\Documents and Settings\\tang_jun\\桌面 我看的我的hex文件时51K…

查看全部问答>

出一大堆TI的板子

本帖最后由 David_Lee 于 2014-4-27 15:01 编辑 2014-4-27 已全部打包捐赠给学校实验室了 1、TMS320F28335 PGF controlCARD,TI DSP系列; 2、TMS320C5535 eZdsp USB Kit,TI DSP系列; 3、TMS320F28027PT-48pin Experimenter’s Kit,TI M ...…

查看全部问答>