找回密码
 立即注册
查看: 698|回复: 13

AI8H8K64U,D版本串口问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-19 09:25:03 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-11-19 09:46 编辑

AI8H8K64U,D版本,UART1 的TX RX接一起,用9bit 单线通信,在中断中 TX发送完成后马上开启接收,这时候收到的数据是正常的,但 UART2,异常,会触发一次接收中断,这时候取S2BUF是旧数据。问:这2个串口底层工作是不是不一样,uart3 uart4是否也存在相同问题。
微信图片_20241119092347.png

3B 。。。。。2C 是从机发送的数据,stc收后发送一条数据后启动接收,会触发一次接收中断(100%触发,不知道怎么跟踪间隔多久等),uart1 就不会。    是不是 Tx -> Rx 要保护时间?


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-11-19 09:47:46 | 显示全部楼层
是不是中断优先级的原因
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-19 10:07:00 | 显示全部楼层
Debu*** 发表于 2024-11-19 09:47
是不是中断优先级的原因

中断优先级已经配置了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-11-19 10:32:51 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-19 14:28:07 | 显示全部楼层
神*** 发表于 2024-11-19 10:32
用下面的程序测试下

UART1.jpg
UART2,3,4.jpg
串口2,3,4都会有这个现象,做PSAM卡方案,需要多路通讯


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-11-19 15:05:18 | 显示全部楼层
将收发接在一起,发送时也接收到自己发的,转接收时,清除RI标志试试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-20 09:30:08 | 显示全部楼层
梁*** 发表于 2024-11-19 15:05
将收发接在一起,发送时也接收到自己发的,转接收时,清除RI标志试试。

STC8H_TxRxTest.zip (284.95 KB, 下载次数: 63)

//S4BUF = SCON; //test: UART 1/2/3 ISR 只能开启一个, 观察 2路示波器 (UART4 和 UART 1/2/3),3个中断分别开启这个,观察示波器.

麻烦大佬看下是什么问题,项目调通一路准备收尾了,结果卡住了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-20 11:29:42 | 显示全部楼层
匿0*** 发表于 2024-11-20 09:30
//S4BUF = SCON; //test: UART 1/2/3 ISR 只能开启一个, 观察 2路示波器 (UART4 和 UART 1/2/3),3个中 ...

代码只要修改以下部分
111.png 222.png

然后此代码抓到的波形如下图
444.jpg 333.jpg



点评

请先别修改程序, 直接下载"02A-串口2中断收发(收发并联单线通讯)"里的"UART2.hex"测试, 主频选择11.0592MHZ. 测试正常后再修改移植. 串口2半双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU收到后通过串口把  详情 回复 发表于 2024-11-20 15:40
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-11-20 15:40:04 | 显示全部楼层
本帖最后由 梁工 于 2024-11-20 15:42 编辑
匿0*** 发表于 2024-11-20 11:29
代码只要修改以下部分

请先别修改程序, 直接下载"02A-串口2中断收发(收发并联单线通讯)"里的"UART2.hex"测试, 主频选择11.0592MHZ. 测试正常后再修改移植.


串口2半双工单线(也就是将TXD2、RXD2接在一起)中断方式收发通讯程序。


通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.
空闲时串口处于接收模式,发送时先禁止接收,发送中断里重新允许接收。
由于接收完成中断时刻比发送完成中断时刻晚一个波特的时间(比如比特率57600对应一个波特时间就是17.36us),所以发送中断要延时一个波特时间再允许接收,如果发送中断里马上允许接收,将会触发一次接收中断。

本例每隔500ms主动发送一个字符'A',收到上位机的数据会原样返回。

默认参数:
串口2设置均为 1位起始位, 8位数据位, 1位停止位, 无校验.
串口2(P1.0 P1.1):  57600bps.

==============================================

截图202411201538529179.jpg

截图202411201539346454.jpg

02A-串口2中断收发(收发并联单线通讯).rar (45.68 KB, 下载次数: 63)



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-11-20 15:45:44 | 显示全部楼层
梁*** 发表于 2024-11-19 15:05
将收发接在一起,发送时也接收到自己发的,转接收时,清除RI标志试试。

又尝试抓了下UART2第一次中断后而外进入中断的时间间隔, 感觉和波特率存在关系。方法是在UART2中断中对P35取反,在PWM中断中做P34置0置1。
截图202411201537549975.jpg

以下两张分别是21.5K波特率和500k波特率再次触发串口中断的

截图202411201539317398.jpg

21.5K波特率
截图202411201540206184.jpg

500k波特率
看波形可以知道波特率设置越大马上再次触发串口中断的时间就越快,但不管怎么样都不应该马上再次触发串口中断才对。手头只有STCH8H8K64U  D版本的,不知道其他版本会不会也是这样
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:12 , Processed in 0.179471 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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