完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
最近在STC89C54上跑36M晶振,但发送串口时一直接收错误的数据 串口程序部分如下
/***条件编译区********************/ #define SEND_AD_DATA /*********#define量********************/ #define FOSC 36000000L #define BAUD 600 #ifdef SEND_AD_DATA sfr T2MOD = 0xc9; void Init_T2(void) { SCON |= 0X50; T2CON |= 0X30 T2MOD = 0X00; //默认设置就可以 TL2 = RCAP2L = (65536 - (FOSC / 32 / BAUD)); TH2 = RCAP2H = (65536 - (FOSC / 32 / BAUD)) >> 8; TR2 = 1; //可位寻址 在寄存器T2CON中 ES= 1; } void send_byte(unsigned int send_value) { EA=0; SBUF = send_value>>8; //先发送高位 while(!ti); TI=0; DELAY_Ms(1000); SBUF = send_value; while(!TI); TI = 0; EA=1; } #endif 请问我这样设置有问题么?有谁用过36M的给些调试建议,在此谢过。。。 另外 硬件方面 晶振两旁没有加电容 并了个4.7K的电阻
|
|
相关推荐
19个回答
|
|
|
51 单片机 做串口传输的时候 晶振用的应该是 11.0592M这种的! 数整了 串口数据是有误差的!
|
|
|
|
|
|
还是要看什么整数,什么速率吧 以前用12M的一直没有问题 最近用36M才通信错误 |
|
|
|
|
|
|
|
|
|
|
|
你看一下 计算波特率的公式 就知道了 12M 也是有误差率的 肯能你用的速率低 传的数据少的问题! |
|
|
|
|
|
TL2 = RCAP2L = (65536 - (FOSC / 32 / BAUD)); TH2 = RCAP2H = (65536 - (FOSC / 32 / BAUD)) >> 8; 这个计算公式应该没错 用过很多次了,波特率从600一直试到15200 |
|
|
|
|
|
波特率用300试试
我前段时间调32M频率下的1T单片机串口通讯,一开始也是怎么都不行,后来设置波特率300后才通了,然后慢慢提高的。 最后稳定在方式2下,波特率正好是500K。 对了,我用的晶振是有源的 |
|
|
|
|
|
你说的慢慢提高是怎么个提高法?我现在调到600了都不行 |
|
|
|
|
|
现在估计主要问题是晶振不稳定,因为用示波器测振荡频率时偶尔能发对一个字节
|
|
|
|
|
|
为啥并个k级的电阻?我记得是兆级的吧?不放心就用波形发生器生成个36m的输进去。另外这个u的最高输入频率是多少?
|
|
|
|
|
|
4.7K是我在宏晶官网上看的,按照他那个手册接的电路 除了串口不行外 其余的函数模块现在都没问题
|
|
|
|
|
|
你用什么接收的? 我的设计是若干片C51通讯,一主N从的那种。一开始直接测试,发现不能建立连接。于是用主芯片发数据给PC,最终把波特率降低到300才使波特率误差降低到允许范围成功通讯。 然后我就用这个波特率去修改通讯协议,成功后,提高波特率测试(因为担心波特率高了有干扰误码的问题),最终稳定在方式2,波特率是固定的主时钟/64,也就是500K。 你说你在晶振上并4.7K电阻我很奇怪,怎么会并这么小的电阻,应该是兆欧级别的吧?另外如此高频率的晶振,你不加谐振电容?示波器观察晶振波形稳定么? |
|
|
|
|
|
STC的DATASHEET里哪里有写晶振上并4.7K电阻啊?我看都是对地加4.7P的电容,再就是建议33M以上使用有源晶振,从OSC1输入。
|
|
|
|
|
|
宏晶网上手册上就说不用增加谐振电容,我现在就只和PC机通信。或许那个电阻是太小了吧 我看别的电路都是兆欧级别,但是看数据手册上用4.7K,所以才采用4.7来试的。明天增加电容和改大电阻试试看,因为用示波器测波形时虽然波形很杂,但偶尔能发对一两个字节,可能并大电阻会好点。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
电阻不要并,里面已经有电阻了. 电容用30P.....它那个莫名其妙.
|
|
|
|
|
|
|
|
|
https://bbs.elecfans.com/forum.php?mod=viewthread&tid=181841&highlight=%E5%B0%8F%E7%B2%BE%E7%81%B5 51单片机小精灵,很好用的辅助软件,你用来算一下波特率。会有出错提示的。 36M的晶振6T,波特率不能选300,600,误差太大了。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:56 , Processed in 1.007579 second(s), Total 76, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3145