找回密码
 立即注册
楼主: 神农鼎

0.99元USB-8H2K08U,144MHz-PWM硬件移相,51全面进入USB时代

 火.. [复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:188
  • 最近打卡:2025-05-05 13:38:47

20

主题

121

回帖

773

积分

高级会员

积分
773
发表于 2024-1-10 07:01:23 | 显示全部楼层

关于8H08U系列的串口新功能

本帖最后由 Mr_LG 于 2024-1-10 07:02 编辑

这两天节奏有点迟缓啊,不见动静?难道干脆在改进硬件?那就大惊喜了!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2059

回帖

7077

积分

论坛元老

积分
7077
发表于 2024-1-10 09:41:44 | 显示全部楼层
本帖最后由 乘风飞扬 于 2024-3-22 15:56 编辑

STC8H2K08U串口超时中断演示例程

串口1超时中断寄存器配置:
  1.     UR1TOCR = 0xC0; //开启超时中断,SCALE(bit5) = 0:使用波特率bit时钟周期; 1:使用系统时钟周期
  2.     UR1TOTL = 0x80; //设置超时时间:128个位时钟周期=(1000000/115200)*128us
  3.     UR1TOTH = 0x00;
  4.     UR1TOTE = 0x00; //写完TE超时时间才会生效
复制代码

串口2超时中断寄存器配置:
  1.     UR2TOCR = 0xE0; //开启超时中断,SCALE(bit5) = 0:使用波特率bit时钟周期; 1:使用系统时钟周期
  2.     UR2TOTL = 0xE0; //0xABE0 = 44000, 超时时间 = 系统时钟周期 * 44000
  3.     UR2TOTH = 0xAB;
  4.     UR2TOTE = 0x00; //写完TE超时时间才会生效
复制代码

串口1中断函数处理:
  1. void UART1_int (void) interrupt 4
  2. {
  3.     if(RI)
  4.     {
  5.         RI = 0;
  6.         RX1_Buffer[RX1_Cnt] = SBUF;
  7.         if(++RX1_Cnt >= UART1_BUF_LENGTH)   RX1_Cnt = 0;
  8.     }
  9.     if(TI)
  10.     {
  11.         TI = 0;
  12.         B_TX1_Busy = 0;
  13.     }
  14.     if(UR1TOSR & 0x01)  //判定是否产生超时中断
  15.     {
  16. //        P37 = !P37;
  17.         B_RX1_OK = 1;
  18.         UR1TOSR = 0x80; //设置 RTOCF 清除超时标志位 TOIF
  19.     }
  20. }
复制代码

串口2中断函数处理:
  1. void UART2_int (void) interrupt 8
  2. {
  3.     if((S2CON & 1) != 0)
  4.     {
  5.         S2CON &= ~1;    //Clear Rx flag
  6.         RX2_Buffer[RX2_Cnt] = S2BUF;
  7.         if(++RX2_Cnt >= UART2_BUF_LENGTH)   RX2_Cnt = 0;
  8.     }
  9.     if((S2CON & 2) != 0)
  10.     {
  11.         S2CON &= ~2;    //Clear Tx flag
  12.         B_TX2_Busy = 0;
  13.     }
  14.     if(UR2TOSR & 0x01)  //判定是否产生超时中断
  15.     {
  16. //        P36 = !P36;
  17.         B_RX2_OK = 1;
  18.         UR2TOSR = 0x80; //设置 RTOCF 清除超时标志位 TOIF
  19.     }
  20. }
复制代码

参考例程: STC8H2K08U串口1串口2-超时中断与电脑收发测试-20240322.zip (15.43 KB, 下载次数: 551)

点评

(接楼下:)故只能使用1uS时钟。所以万望下次正式推出时增加移位时钟为超时计数单位!!  发表于 2024-1-29 20:32
最近正式使用串口接收超时。原想用系统时钟更精准(如:22118400/115200=192,是整数)。可遇到9600bps就翻车了:22118400/9600=2304,再乘35bit时超出16位了!  发表于 2024-1-29 20:30
谢谢!你哪来的头文件?  发表于 2024-1-10 11:05
及时雨啊!马上来试!  发表于 2024-1-10 10:36
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2059

回帖

7077

积分

论坛元老

积分
7077
发表于 2024-1-10 13:13:59 | 显示全部楼层
使用例程包里面配套的头文件。
在原STC8H.h头文件基础上添加STC8H2K08U特有的寄存器定义。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:188
  • 最近打卡:2025-05-05 13:38:47

20

主题

121

回帖

773

积分

高级会员

积分
773
发表于 2024-1-10 15:03:13 | 显示全部楼层
赞一个!继续,坐等硬件奇偶校验啦。

点评

暂时只有接收的 硬件校验,没有发送的,等以后新产品  详情 回复 发表于 2024-1-10 15:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

733

主题

1万

回帖

1万

积分

管理员

积分
16661
发表于 2024-1-10 15:12:51 | 显示全部楼层
Mr_*** 发表于 2024-1-10 15:03
赞一个!继续,坐等硬件奇偶校验啦。


截图202401101513556430.jpg


暂时只做了 接收的 硬件奇偶校验,漏了发送的,
就不讲有了,这个新功能-
硬件奇偶校验,等以后新产品再有
===其实一般都是 CRC 校验


点评

哦,知道了。  发表于 2024-1-10 18:47
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:188
  • 最近打卡:2025-05-05 13:38:47

20

主题

121

回帖

773

积分

高级会员

积分
773
发表于 2024-1-10 18:53:55 | 显示全部楼层
盼望硬件奇偶校验的原因:
1,有些485通信协议的产品,上位机被”规定“为”奇“或”偶“校验;
2,又想动用DMA传送,此时没有硬件自动奇偶校验,就不能发挥DMA的全部优势(还得每个字节响应接收中断)!
3,我有个应用同,需要借第9位来标识字节流的序号的奇偶性。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

733

主题

1万

回帖

1万

积分

管理员

积分
16661
发表于 2024-1-10 18:59:51 | 显示全部楼层
1,用管脚兼容的 STC32
2,  舍弃 硬件奇偶校验 用 CRC 校验

3,先量产这个 STC8H2K08U-45I-TSSOP20/SOP16 的 A版
===后续 STC8H2K32U-45I-LQFP32 出来 再 改版 STC8H2K08U

另外 STC8H2K08U-45I-TSSOP20/SOP16
===接收的 硬件奇偶校验 是有的,缺了发送的
===明这部分开放出来

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:188
  • 最近打卡:2025-05-05 13:38:47

20

主题

121

回帖

773

积分

高级会员

积分
773
发表于 2024-1-11 06:23:17 | 显示全部楼层
本帖最后由 Mr_LG 于 2024-1-11 06:44 编辑

在一个创新活力澎拜的团队内,对老型号产品的提升是一种“痒”或者说“瘾”,呵呵,有体会!
因此,产品线之间功能上的“跨界”现象,实在是在所难免!
但还是要好好斟酌,“S”、“T”、“U”,乃至“L”、“C”、“D”、这些尾缀的区分,尽量让用户方便选型。


我瞎说说啊:C给LCD,E给LED,D给DMA,S还给串口(未来均增强),T给触摸屏,U给USB。。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2059

回帖

7077

积分

论坛元老

积分
7077
发表于 2024-1-11 17:57:36 | 显示全部楼层
STC8H2K08U串口接收硬件奇偶校验演示例程

注:STC8H2K08U-A版本-大量生产的版本,
===新增 串口接收硬件奇偶校验
===串口发送的硬件奇偶校验位自动产生,暂时没有,需要软件处理,后续B版本再增加这个。

通过定义使能奇偶校验:
  1. #define NONE_PARITY     0       //无校验
  2. #define ODD_PARITY      1       //奇校验
  3. #define EVEN_PARITY     2       //偶校验
  4. #define PARITYBIT       ODD_PARITY  //定义校验位
复制代码

串口1硬件奇偶校验寄存器配置:
  1. #if (PARITYBIT == NONE_PARITY)
  2.     USARTCR2 = 0x00;    //禁止硬件产生奇偶校验
  3. #elif (PARITYBIT == EVEN_PARITY)
  4.     //串口1(模式3:可变波特率9位数据)
  5.     SCON |= 0xc0;
  6.     USARTCR2 = 0x04;    //使能硬件产生偶校验
  7. #elif (PARITYBIT == ODD_PARITY)
  8.     //串口1(模式3:可变波特率9位数据)
  9.     SCON |= 0xc0;
  10.     USARTCR2 = 0x06;    //使能硬件产生奇校验
  11. #endif
复制代码

串口2硬件奇偶校验寄存器配置:
  1. #if (PARITYBIT == NONE_PARITY)
  2.     USART2CR2 = 0x00;    //禁止硬件产生奇偶校验
  3. #elif (PARITYBIT == EVEN_PARITY)
  4.     //串口2(模式1:可变波特率9位数据)
  5.     S2CON |= 0x80;
  6.     USART2CR2 = 0x04;    //使能硬件产生偶校验
  7. #elif (PARITYBIT == ODD_PARITY)
  8.     //串口2(模式1:可变波特率9位数据)
  9.     S2CON |= 0x80;
  10.     USART2CR2 = 0x06;    //使能硬件产生奇校验
  11. #endif
复制代码

参考例程: STC8H2K08U-串口1串口2-接收硬件奇偶校验-发送软件奇偶校验.zip (15.95 KB, 下载次数: 498)


点评

好!赞一个!  发表于 2024-1-11 18:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

733

主题

1万

回帖

1万

积分

管理员

积分
16661
发表于 2024-1-12 15:16:02 | 显示全部楼层
网友 立创版 即将开源作品
截图202401121514454891.jpg


截图202401121515576331.jpg

截图202401121517542620.jpg



点评

呵呵,受众是形形色色的,我倒希望在“S-TXD2”和“S-VCC”之间再加个GND。 如此可“拖”两块目标板。  发表于 2024-1-12 18:47
我喜欢这小个子!越小越好。  发表于 2024-1-12 18:43
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 13:00 , Processed in 0.169652 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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