找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2375|回复: 14
打印 上一主题 下一主题
收起左侧

求教如何实现串口的转接

  [复制链接]
跳转到指定楼层
楼主
我使用的是STC15W4K56S4芯片,连接ESP8266。ESP8266连接的串口是P1^0和P1^1,与CH340连接的串口P3^0和P3^1不同。该怎么实现转接。

8266.png (18.91 KB, 下载次数: 46)

8266.png

CH340.png (34.63 KB, 下载次数: 54)

CH340.png

MCU.png (62.58 KB, 下载次数: 47)

MCU.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:654645 发表于 2021-2-19 10:48 | 只看该作者
是为了解决发送AT指令,没有反应的问题。希望大佬们给点方法思路!
回复

使用道具 举报

板凳
ID:277550 发表于 2021-2-19 12:08 | 只看该作者

这是双串口的MCU,打开双串口(完整版的下载工具中有例子),速率相同,就可以通讯了
回复

使用道具 举报

地板
ID:648281 发表于 2021-2-19 14:10 | 只看该作者
你好@
这两个串口是完全独立的,不能进行相互切换
回复

使用道具 举报

5#
ID:654645 发表于 2021-2-19 14:22 | 只看该作者
devcang 发表于 2021-2-19 12:08
这是双串口的MCU,打开双串口(完整版的下载工具中有例子),速率相同,就可以通讯了

这个芯片总共有四组串行口。
因为下载用的是P30和P31口,将3031收到的at指令再发过去(rx转tx2,rx2转tx)。我不知道该怎么编码。
回复

使用道具 举报

6#
ID:654645 发表于 2021-2-19 15:22 | 只看该作者
devcang 发表于 2021-2-19 12:08
这是双串口的MCU,打开双串口(完整版的下载工具中有例子),速率相同,就可以通讯了

这总共有四组串口。
下载读写用的是P30和P31,想将P30的RX转P11的tx2,P10的rx2转P31的tx。但不知道该怎么操作编码。
回复

使用道具 举报

7#
ID:261025 发表于 2021-2-19 16:19 | 只看该作者
不懂C语言  汇编转过P3.6 P3.7
想转哪个就调用哪个  用的是STC15W204S  试过用P3.0接收 P3.7发送   程序是在下载软件的范例程序里找的  源程序没用明白  把改串口的部分提取出来就行了


;串口P3.0_RX  P3.1_TX
RXTX30:   
    MOV   A,P_SW1;
    ANL   A,#03FH;               //S1_S0=0 S1_S1=0
    MOV   P_SW1,A;               //(P3.0/RxD, P3.1/TxD)
        RET;
;-----------------------
;串口P3.6_RX   P3.7_TX
RXTX36:
    MOV   A,P_SW1
    ANL   A,#03FH               //S1_S0=1 S1_S1=0
    ORL   A,#S1_S0              //(P3.6/RxD_2, P3.7/TxD_2)
    MOV   P_SW1,A
        RET;

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:884930 发表于 2021-2-19 16:26 | 只看该作者
这两个串口是完全独立的,不能进行相互切换
回复

使用道具 举报

9#
ID:884954 发表于 2021-2-19 18:18 | 只看该作者
如果这个芯片有双串口,那就从芯片手册上去找,我记得stc的新芯片官方都给例程
回复

使用道具 举报

10#
ID:654645 发表于 2021-2-19 23:05 | 只看该作者
418854190 发表于 2021-2-19 16:19
不懂C语言  汇编转过P3.6 P3.7
想转哪个就调用哪个  用的是STC15W204S  试过用P3.0接收 P3.7发送   程序是 ...

好的 我看看
另外请问你说的下载软件的范例程序是哪里找的
回复

使用道具 举报

11#
ID:592807 发表于 2021-2-20 08:46 | 只看该作者
随便网上搜个STM32的ESP8266例程就好了,自己改一下
回复

使用道具 举报

12#
ID:883031 发表于 2021-2-21 15:24 | 只看该作者
你的问题描述的不太明白。
看看是不是这样:P30接收的数据从P11发送出去,相反,P10接收的数据从P31发送出去。如果是这样的话,写上两个不同串口的收发程序,透明发送出去就行。
回复

使用道具 举报

13#
ID:654645 发表于 2021-2-22 11:49 | 只看该作者
cn_zhx 发表于 2021-2-21 15:24
你的问题描述的不太明白。
看看是不是这样:P30接收的数据从P11发送出去,相反,P10接收的数据从P31发送出 ...

嗯对  是这个意思。 但串口3的收发程序编写不知道哪里错了,不能收发,能不能帮忙看看。
#include "stc15f2k60s2.h"            // 单片机STC15F2K60S2头文件,可以不再加入reg51.h
#include "uart.h"

sbit KEY1 = P2^0;
sbit KEY2 = P2^1;

#define S3RI 0x01 //S3CON.0
#define S3TI 0x02 //S3CON.1
#define ES3 0x08    //IE2.3

#define uchar unsigned char
#define uint unsigned int
unsigned char date;

void delay(uint z)
{                                                                                                                                                                                          
    uint i,j;
    for(i=z;i>0;i--)
        for(j=110;j>0;j--);
}
void UartInit(void);
void Uart3Init(void);
void main(void)
{
        //定时器
        TMOD = 0x00;//定时器0,模式0
        TH0=0x3c;//50ms定时器初值设定
        TL0=0xb0;
        TR0=1;
        ET0=1;
        EA=1;
        UartInit();
        Uart3Init();
        led1 = 1;
        led3 = 1;
        while(1)
        {
                if(KEY2==0)
                {
                        delay(1000);
                        if(KEY2==0)          //确认触发
                        {
                                SBUF = '1';
                                delay(100);
                        }
                        if(KEY1==0)
                        {
                        delay(1000);
                                if(KEY1==0)          //确认触发
                                {
                                        S3BUF='2';
                                        delay(100);
                                }
                        }
                }
        }
}
void uart1ISR() interrupt 4
{
        if(RI){
                        date=SBUF;    //单片机接受
                        SBUF=date;    //单片机发送
                        RI=0;
                  }
                        if(TI){
                                TI=0;
                        }
}

void UART3_Isr(void) interrupt 17
{
        if (S3CON & S3RI)    {
                  date = S3BUF;
                        S3BUF = date;
                       
      S3CON &= ~S3RI;         // 清中断标志
        }
    if (S3CON & S3TI)    {
      S3CON &= ~S3TI;         // 清中断标志
                       
    }
}
void Uart3Init(void)
{
//        S3CON  = 0x10;                // 8位数据,可变波特率
//        T2L=(65536-11059200/4/9600);     
//  T2H=(65536-11059200/4/9600)>>8;
//        AUXR = 0x14;                //定时器2时钟为Fosc,即1T
//        IE2=0x08;       // 使能串口中断
//        EA = 1;         // 开总中断
        S3CON  = 0x10;                // 8位数据,可变波特率
        AUXR  |= 0x04;                // 定时器2时钟为Fosc,即1T
        T2L    = (65536-11059200/4/9600);       
        T2H    = (65536-11059200/4/9600)>>8;                // 设定定时初值
        AUXR  |= 0x10;                // 启动定时器2
        IE2    = ES3;       // 使能串口中断
        EA     = 1;         // 开总中断
}
void UartInit(void)                //9600bps
{

/*        SCON = 0x50;                //8位数据,可变波特率
//        AUXR = 0x15;                //定时器2时钟为Fosc,即1T
  T2L=(65536-11059200/4/9600);     
  T2H=(65536-11059200/4/9600)>>8;       
        ET1 = 0;                        //禁止定时器1中断
        ES=1;*/
        SCON  = 0x50;                // 8位数据,可变波特率
        AUXR |= 0x40;                // 定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                // 串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                // 设定定时器1为16位自动重装方式
        TL1   = (65536-11059200/4/9600);                // 设定定时初值
        TH1   = (65536-11059200/4/9600)>>8;                // 设定定时初值
        ET1   = 0;                    // 禁止定时器1中断
        TR1   = 1;                    // 启动定时器1
        ES    = 1;          // 开串口中断
        EA    = 1;          // 开总中断
}
回复

使用道具 举报

14#
ID:390416 发表于 2021-2-22 20:47 | 只看该作者
这点东西也很难吗?开个数组存起来不就行了
回复

使用道具 举报

15#
ID:280000 发表于 2021-3-10 00:22 | 只看该作者
通过USB转TTL
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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