找回密码
 立即注册
查看: 5151|回复: 10

STC8G1K08模拟串口

[复制链接]

11

主题

12

回帖

111

积分

注册会员

积分
111
发表于 2023-5-4 13:26:23 | 显示全部楼层 |阅读模式
请教STC的工程师,STC8G1K08如果想用IO口模拟串口,哪些配置需要注意?从贵司的官网下载的STC15系列使用Timer2接合INT4模拟一个半双工串口例程,
改变头文件#include        <reg52.h>为
#include "STC8Gxxx.h",
改变IO口配置,
sbit P_RX3 = P1^6;        //定义模拟串口接收IO
sbit P_TX3 = P1^7;        //定义模拟串口发送IO
增加了IO口初始化P1M0 &= ~0xc0; P1M1 &= ~0xc0;
但是程序没收到数据,不知哪里配置有问题?
或者你们有STC8G系列模拟串口的例程?
附件是改过的程序,请指点
28-DEMO-使用Timer2接合INT4模拟一个半双工串口.rar (67.06 KB, 下载次数: 303)





回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-04-28 16:56:43

21

主题

376

回帖

2345

积分

超级版主

积分
2345
发表于 2023-5-5 10:07:37 | 显示全部楼层
STC8G1K08有直接的串口,不需要用复杂的软件模拟。
1.png

电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

11

主题

12

回帖

111

积分

注册会员

积分
111
发表于 2023-5-8 10:05:46 | 显示全部楼层
我是用P1.6和P1.7做的例子,实际使用的是P3.4和P3.5。能辛苦STC的工程师给个P3.4和P3.5的IO口模拟串口的半双工例程吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-04-28 16:56:43

21

主题

376

回帖

2345

积分

超级版主

积分
2345
发表于 2023-5-8 12:02:40 | 显示全部楼层
STC8G1K08有直接的串口,不需要用复杂的软件模拟。
目前只有这个范例(STC15的):

14-模拟串口.rar

20.96 KB, 下载次数: 383

电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-01-04 13:07:18

1

主题

7

回帖

69

积分

注册会员

积分
69
发表于 2023-5-29 08:24:18 | 显示全部楼层
有没有遇到上电会误发1~2字节的情况,如何避免误发数据?

点评

串口发送时主动的,不发送就不会发,怎么会有误发?接口电路上电进入工作时可能会是低电平一下,对方可能会误收一两个字节,但那不是MCU发的,是你的硬件问题。MCU的串口,上电为高电平或高阻,都不会导致误发的。  详情 回复 发表于 2023-5-29 14:29
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-04-28 16:56:43

21

主题

376

回帖

2345

积分

超级版主

积分
2345
发表于 2023-5-29 11:01:30 | 显示全部楼层
您可以用范例测试下!
电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-5-29 14:29:42 | 显示全部楼层
gj*** 发表于 2023-5-29 08:24
有没有遇到上电会误发1~2字节的情况,如何避免误发数据?

串口发送时主动的,不发送就不会发,怎么会有误发?接口电路上电进入工作时可能会是低电平一下,对方可能会误收一两个字节,但那不是MCU发的,是你的硬件问题。MCU的串口,上电为高电平或高阻,都不会导致误发的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-5-29 14:44:06 | 显示全部楼层
模拟串口方式通常如下:
1、定时器中断三倍采样接收、发送,一个定时器就可以做一个全双工串口,IO任意用,但是波特率不能太高,不建议超过19200(主频24MHz或以上,定时器中断优先级最高)。当波特率9600时,一个定时可以做4~8个模拟串口,非常可靠的,以前我做工控类串口卡,就是这样做的,一个硬件串口接上位机,3个硬件串口提供高速串口,4~8个模拟全双工串口提供1200~9600的波特率。
2、用一路PCA接收,一路PCA发送,可以做一个全双工串口,必须使用PCA输入、输出的IO,波特率可以达到115200(主频24MHz或以上,PCA中断优先级最高)。
3、用两路STC8H、STC32G的PWM做全双工串口,跟上述PCA做的一模一样。

STC-ISP的范例程序里STC15系列例子就有,已经是十年前写的例程了:
1.png

回复 支持 2 反对 0

使用道具 举报 送花

4

主题

7

回帖

58

积分

注册会员

积分
58
发表于 2023-9-8 08:43:06 | 显示全部楼层
梁*** 发表于 2023-5-29 14:44
模拟串口方式通常如下:
1、定时器中断三倍采样接收、发送,一个定时器就可以做一个全双工串口,IO任意用, ...

感谢梁工。我用PCA模拟了串口,波特率4800,光耦隔离,实测效果很好。

点评

如果用的是慢速光耦(比如PC817、EL357等等),注意速度,4800基本是上限,有加速电路则可以到115200.  详情 回复 发表于 2023-9-8 10:20
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-9-8 10:20:23 | 显示全部楼层
bobz*** 发表于 2023-9-8 08:43
感谢梁工。我用PCA模拟了串口,波特率4800,光耦隔离,实测效果很好。

如果用的是慢速光耦(比如PC817、EL357等等),注意速度,4800基本是上限,有加速电路则可以到115200.
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:14 , Processed in 0.124060 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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