找回密码
 立即注册
查看: 1025|回复: 9

STC8A8K64D4串口1升级、串口4调试

[复制链接]

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-8 16:50:44 | 显示全部楼层 |阅读模式
本帖最后由 宁友元 于 2024-7-8 17:06 编辑

cpu初始化:


void cpu_init(void)
{
        //VOCTRL = 0x80;  //掉电模式时使用内部SCC模块,功耗约1.5uA
        EA = 0;
        IT0 = 0;
        EX0 = 1;
        
        P_SW1 = 0x00;
        P_SW2 = 0x00;
        
        IE = 0x00;      //清除所有中断
        IE2 = 0x00;     //清除所有中断
        
        //stc_io_init();

        uart1_init();   // 升级和CPU通信串口
        uart4_init();   // 调试串口
        Timer4Init();
   
        EA = 1;
}


串口1初始化:

void uart1_init()
{
    SCON = 0xD0;    // 串口数据模式必须为 8 位数据 +1 位偶检验
    TMOD = 0x00;
    T2L = BRT;
        T2H = BRT >> 8;
        AUXR = 0x15;

    ES = 1;
    EA = 1;

    wptr = 0x00;
    rptr = 0x00;
    busy = 0;

    P3M0 |= 0x0C;
    P3M1 |= 0x0C;
}

串口4初始化:

void uart4_init(void)
{
    S4CON = 0x10;
    #if 1
    T2L = BRT;
    T2H = BRT >> 8;
    AUXR = 0x14;
    #endif
   
    wptr = 0x00;
    rptr = 0x00;
    busy = 0;
    IE2 |= ES4;
}


timer4初始化:

void Timer4Init(void)
{
        T4T3M |= 0x20;
        T4L = 0x40;         // (65536 - 24M/1000)
        T4H = 0xA2;
        T4T3M |= 0x80;
        IE2 |= ET4;
}


主程序:

int main(void)
{
    cpu_init();
    mdelay(1000);
    printf("\r\n\r\nSTC8A8K84D64 system start.\r\n");
    WDT_CONTR = 0x27;
    while(1)
    {
        WDT_CONTR |= 0x10;
        printf("STC8A8K84D64 timer 1s\r\n");
        }
    return 0;
}


STC8A8K64D4取代STC8A8K64S4A12后,上述代码调试串口4输出没有反应,请问下是什么原因

原理图如下:







截图202407081705249909.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16647
发表于 2024-7-8 17:16:49 | 显示全部楼层
截图202407081715299334.jpg


截图202407081716109006.jpg


截图202407081716464343.jpg

回复 支持 反对

使用道具 举报 送花

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-8 18:37:05 | 显示全部楼层

void stc_io_init(void)
{
    P0M1 &= ~0xFF;
    P0M0 &= ~0xFF;

    P1M1 &= ~0xFF;
    P1M0 &= ~0xFF;

    P2M1 &= ~0xFF;
    P2M0 &= ~0xFF;

    P3M1 &= ~0xFF;
    P3M0 &= ~0xFF;

    P4M1 &= ~0xFF;
    P4M0 &= ~0xFF;

    P5M1 &= ~0xFF;
    P5M0 &= ~0xFF;
}

你说的这些我这边都考虑到了,把串口初始化跟就的mcu一致,寄存器的映射表也有更新,目前还是不行;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-16 10:39:44
已绑定手机

29

主题

349

回帖

1991

积分

金牌会员

机长

积分
1991
发表于 2024-7-8 20:54:37 | 显示全部楼层
本帖最后由 hsrzq 于 2024-7-8 21:03 编辑

1. uart1_init中AUXR = 0x15,串口1手动选择了T2作为波特率发生器;
2. uart4_init中AUXR = 0x14,你又将串口1的波特率发生器改回了T1;
3. 另外uart1_init和uart4_init都重置了wptr、rptr、busy,高度怀疑buffer也复用了;
4. 最后通篇未见初始化T1,又多余初始化了T4,咋看串口1、串口4都正常不了。
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-9 12:42:09 | 显示全部楼层
hsr*** 发表于 2024-7-8 20:54
1. uart1_init中AUXR = 0x15,串口1手动选择了T2作为波特率发生器;
2. uart4_init中AUXR = 0x14,你又将串 ...

STC8A8K64D4和STC8A8K64S4A12的uart1外接串口升级这块有变化没,目前板子更新到STC8A8K64D4,使用原厂提供的uart4固件通过uart1升级到板子上没有反应,不清楚是uart1上电初始化的模式变了还是硬件电路的rx和tx没接好;使用老的mcu和对应uart4的固件,板子启动通过uart4输出了打印信息说明固件是升级进去而且运行成功了;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2025-06-15 14:53:47

4

主题

129

回帖

283

积分

中级会员

积分
283
发表于 2024-7-9 14:43:49 | 显示全部楼层
很好的讲解!
回复 支持 反对

使用道具 举报 送花

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-9 17:18:05 | 显示全部楼层
宁*** 发表于 2024-7-9 12:42
STC8A8K64D4和STC8A8K64S4A12的uart1外接串口升级这块有变化没,目前板子更新到STC8A8K64D4,使用原厂提 ...

麻烦回复一下,这个很关键,能判断出是硬件问题还是软件问题没?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:462
  • 最近打卡:2025-06-16 10:02:39

33

主题

2447

回帖

5168

积分

论坛元老

积分
5168
发表于 2024-7-9 17:28:42 | 显示全部楼层
宁*** 发表于 2024-7-9 17:18
麻烦回复一下,这个很关键,能判断出是硬件问题还是软件问题没?

挺关键。还不把最简工程和原理图发上来
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-9 17:41:12 | 显示全部楼层
现在只需要判断一下STC8A8K64D4和STC8A8K64S4A12,通过串口uart1升级的方式是不是一样的就行,估计是STC8A8K64D4通过uart1代码都没升级进去
回复 支持 反对

使用道具 举报 送花

2

主题

9

回帖

48

积分

新手上路

积分
48
发表于 2024-7-9 21:05:36 | 显示全部楼层
电路图一开始就列出来了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 19:55 , Processed in 0.151758 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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