找回密码
 立即注册
查看: 367|回复: 6

STC8H3K64S2 TSSOP20, 4800bps通讯问题

[复制链接]

该用户从未签到

1

主题

4

回帖

25

积分

新手上路

积分
25
发表于 2023-11-29 15:35:45 | 显示全部楼层 |阅读模式
STC8H3K64S2  TSSOP20  在9600波特率下通讯都是正常的,但是在4800和2400通讯出现异常,4800时断时续,2400直接通讯不起来
回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 141 天

    [LV.7]常住居民III

    27

    主题

    1338

    回帖

    4168

    积分

    论坛元老

    积分
    4168
    发表于 2023-11-29 16:15:49 | 显示全部楼层
    建议先使用官方例程,只修改主频跟波特率,烧录到芯片里跟电脑通信测试。
    串口配置也可以使用STC-ISP软件生成代码:
    截图202311291610282178.jpg
    波特率降低通信速度变慢,正常会更稳定。可用低主频,或者作为波特率发生器的定时器使用12分频。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    回帖

    25

    积分

    新手上路

    积分
    25
     楼主| 发表于 2023-11-29 16:20:45 | 显示全部楼层
    STC8H3K64S2  top20  和STC8H3K64S4-48PIN  串口配置一样的话,有没有问题?目前STC8H3K64S4-48PIN这个单片机正常通讯4800和2400都没有问题

    点评

    你描述下你的时钟,串口,波特率发生器  详情 回复 发表于 2023-11-29 17:25
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9441

    回帖

    1万

    积分

    管理员

    积分
    14031
    发表于 2023-11-29 17:25:09 | 显示全部楼层
    范特西物联网 发表于 2023-11-29 16:20
    STC8H3K64S2  top20  和STC8H3K64S4-48PIN  串口配置一样的话,有没有问题?目前STC8H3K64S4-48PIN这个单片 ...

    你描述下你的时钟,串口,波特率发生器
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    回帖

    25

    积分

    新手上路

    积分
    25
     楼主| 发表于 2023-11-30 09:27:30 | 显示全部楼层
            TIM_InitTypeDef                TIM_InitStructure;                                                //结构定义
            TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
            TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T;                //指定时钟源,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
            TIM_InitStructure.TIM_ClkOut    = ENABLE;                                //是否输出高速脉冲, ENABLE或DISABLE
            TIM_InitStructure.TIM_Value     = 65536UL - (MAIN_Fosc / (1000*12));                //初值,
            TIM_InitStructure.TIM_Run       = ENABLE;                                        //是否初始化后启动定时器, ENABLE或DISABLE
            Timer_Inilize(Timer0,&TIM_InitStructure);                                        //初始化Timer0          Timer0,Timer1,Timer2,Timer3,Timer4
            NVIC_Timer0_Init(ENABLE,Priority_0);                //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    回帖

    25

    积分

    新手上路

    积分
    25
     楼主| 发表于 2023-11-30 09:27:47 | 显示全部楼层
            COMx_InitDefine                COMx_InitStructure;                                        //结构定义

            COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;        //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
            COMx_InitStructure.UART_BRT_Use   = BRT_Timer1;                        //使用波特率, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
            //COMx_InitStructure.UART_BaudRate  = 115200ul;                        //波特率, 一般 110 ~ 115200
            switch(EEPROM_Data.REG_Data_Keep.reg_4001_Band)
        {
            case 1://1200
                COMx_InitStructure.UART_BaudRate  = 1200ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 2://2400
                COMx_InitStructure.UART_BaudRate  = 2400ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 3://4800
                COMx_InitStructure.UART_BaudRate  = 4800ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 4://9600
                COMx_InitStructure.UART_BaudRate  = 9600ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 5://19200
                COMx_InitStructure.UART_BaudRate  = 19200ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 6://38400
                COMx_InitStructure.UART_BaudRate  = 38400ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 7://57600
                COMx_InitStructure.UART_BaudRate  = 57600ul;                        //波特率, 一般 110 ~ 115200
                break;
            case 8://115200
                COMx_InitStructure.UART_BaudRate  = 115200ul;                        //波特率, 一般 110 ~ 115200
                break;
                    default://9600      错误与默认为9600
                COMx_InitStructure.UART_BaudRate  = 9600;                        //波特率, 一般 110 ~ 115200
                            break;               
        }
         //       COMx_InitStructure.UART_BaudRate  = 115200;       
            COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允许,   ENABLE或DISABLE
            COMx_InitStructure.BaudRateDouble = DISABLE;                        //波特率加倍, ENABLE或DISABLE
            UART_Configuration(UART1, &COMx_InitStructure);                //初始化串口1 UART1,UART2,UART3,UART4
            NVIC_UART1_Init(ENABLE,Priority_3);                //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3

            COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;                //模式,   UART_ShiftRight,UART_8bit
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    回帖

    25

    积分

    新手上路

    积分
    25
     楼主| 发表于 2023-11-30 09:33:20 | 显示全部楼层
    您这边给看看配置有没有问题,9600波特率及以上都没有问题,4800及以下就出问题
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-15 20:23 , Processed in 0.070030 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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