迪文科技论坛

 找回密码
 立即注册
搜索
查看: 332|回复: 10

【提问】UART2波特率不能大于115200

[复制链接]

13

主题

17

回帖

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2022-5-13 19:51:27 | 显示全部楼层 |阅读模式
串口2使用波特率小于115200时通讯均正常,增大到115200后数据接收错误,不知道为什么
回复

使用道具 举报

0

主题

468

回帖

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
发表于 2022-5-13 20:15:49 | 显示全部楼层
出厂的时候默认的波特率是115200的,方便发一下型号和CFG设置吗
回复

使用道具 举报

13

主题

17

回帖

222

积分

中级会员

Rank: 3Rank: 3

积分
222
 楼主| 发表于 2022-5-13 20:51:18 | 显示全部楼层
Dai2816130749 发表于 2022-5-13 20:15
出厂的时候默认的波特率是115200的,方便发一下型号和CFG设置吗

自己修改了C51部分的程序,原来默认的没有试过
回复

使用道具 举报

13

主题

17

回帖

222

积分

中级会员

Rank: 3Rank: 3

积分
222
 楼主| 发表于 2022-5-13 21:11:22 | 显示全部楼层
Dai2816130749 发表于 2022-5-13 20:15
出厂的时候默认的波特率是115200的,方便发一下型号和CFG设置吗

屏幕型号:DMG80480F070_01WTR
试了一下资料包里面的CFG文件,一样的效果
回复

使用道具 举报

0

主题

468

回帖

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
发表于 2022-5-13 21:24:49 | 显示全部楼层
本帖最后由 Dai2816130749 于 2022-5-13 21:26 编辑

下载附件的OS程序,放到SD卡的DWIN_SET ,冲掉C51测试一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

13

主题

17

回帖

222

积分

中级会员

Rank: 3Rank: 3

积分
222
 楼主| 发表于 2022-5-13 21:44:54 | 显示全部楼层
Dai2816130749 发表于 2022-5-13 21:24
下载附件的OS程序,放到SD卡的DWIN_SET ,冲掉C51测试一下

用这个是可以的
回复

使用道具 举报

4

主题

9

回帖

233

积分

中级会员

Rank: 3Rank: 3

积分
233
发表于 2022-5-14 20:26:18 | 显示全部楼层
这是程序的问题还是编译软件的问题?
一直存在这样的困惑:编写程序用ASM还是C的问题
回复

使用道具 举报

0

主题

316

回帖

1846

积分

金牌会员

Rank: 6Rank: 6

积分
1846
发表于 2022-5-16 08:35:30 | 显示全部楼层
xyfox 发表于 2022-5-14 20:26
这是程序的问题还是编译软件的问题?
一直存在这样的困惑:编写程序用ASM还是C的问题 ...

51程序,和OS程序是不能同时使用。
这个是楼主的程序问题
回复

使用道具 举报

13

主题

17

回帖

222

积分

中级会员

Rank: 3Rank: 3

积分
222
 楼主| 发表于 2022-5-24 22:17:47 | 显示全部楼层
wangyuxiang 发表于 2022-5-16 08:35
51程序,和OS程序是不能同时使用。
这个是楼主的程序问题

原因定位到了,用的传参改变波特率(代码如下),但不知为什么传参值大于115200后计算波特率不对
void Uart2_Init(uint32_t baud_rate)
{
        uint16_t i = 0;
        uint16_t baud = 0;
        baud=(uint16_t)(1024-FOSC/64/baud_rate);
        MUX_SEL |= 0x40;        //引出uart2
        P0MDOUT &= 0xCF;        //P0 0001 0000
        P0MDOUT |= 0x10;
        ADCON = 0x80;                        //UART2 8N1 115200
        SCON0 = 0x50;
        SREL0H = (baud>>8);                //波特率 = FCLK/64*(1024-SREL)
        SREL0L = baud;    // S_2/115200=224=0X03E4 1024-206438400/(64*115200)=0X03E4
  
        ES0 = 1;
}
回复

使用道具 举报

0

主题

1222

回帖

4974

积分

论坛元老

Rank: 8Rank: 8

积分
4974
发表于 2022-5-25 09:35:05 | 显示全部楼层
大boy 发表于 2022-5-24 22:17
原因定位到了,用的传参改变波特率(代码如下),但不知为什么传参值大于115200后计算波特率不对
void Uar ...

可以把计算过程中产生的数据打印出来看看数据对不对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-4-19 15:10 , Processed in 0.076980 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表