查看: 6288|回复: 11

[已解决] KE06串口BUG

[复制链接]

该用户从未签到

15

主题

40

帖子

0

中级会员

Rank: 3Rank: 3

积分
202
最后登录
2020-7-2
发表于 2018-7-31 17:09:40 | 显示全部楼层 |阅读模式
本帖最后由 你好我不是大神 于 2018-7-31 17:26 编辑

关于串口使用,我是这样使用的附上代码
        UART_ConfigType sConfig;
        sConfig.u32SysClkHz = 40000000L;
        sConfig.u32Baudrate = 115200;
        UART_Init(UART2,&sConfig);
        UART_SetCallback(UART_HandleInt);        
        
        UART_EnableRxBuffFullInt(UART2);   /* enable rx interrupt */
自己在使用的时候,复位后正常能使用串口,但是串口长时间工作后,或者说KE06芯片长时间工作后,串口不工作了,不知道哪里出了问题。
测试情况是这样的,根据自己的协议,能够正常通信。有校验位,关于协议能够保证正确,KE06作为从机,在主机接收不到KE06的数据后,进行测试,主机有发送请求指令,但是KE06芯片不会回复,情况是这样的,想来问问是不是芯片自己本身带有BUG,这种情况已经有两个项目遇到了,求助啊!!!!另外刚刚测试出来,程序一直会进去下面代码
    if(UART_CheckFlag(pUART,UART_FlagOR))
    {
    read_temp = UART_ReadDataReg(pUART);     
    }
把断点加在测试的那一行,但是并没有向KE06发送数据,但是程序会停在断点处。这个感觉很可怕啊



最佳答案

并没有bug,自己不会用罢了,官方的串口设置问题,接收指定字节后会关掉,所以建议自己修改官方函数
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25446
最后登录
2025-9-4
发表于 2018-8-1 10:06:26 | 显示全部楼层
我想请问的是,你有没有找到如何复现此现象的具体步骤,方便我们这边复现,追踪问题呢
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2018-8-1 11:41:21 | 显示全部楼层
    并没有bug,自己不会用罢了,官方的串口设置问题,接收指定字节后会关掉,所以建议自己修改官方函数
    开心
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    40

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    202
    最后登录
    2020-7-2
     楼主| 发表于 2018-8-1 17:02:15 | 显示全部楼层
    小恩GG 发表于 2018-8-1 10:06
    我想请问的是,你有没有找到如何复现此现象的具体步骤,方便我们这边复现,追踪问题呢 ...

    长时间使用以后出现的,我也想复现
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    40

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    202
    最后登录
    2020-7-2
     楼主| 发表于 2018-8-1 17:05:03 | 显示全部楼层
    原来的你 发表于 2018-8-1 11:41
    并没有bug,自己不会用罢了,官方的串口设置问题,接收指定字节后会关掉,所以建议自己修改官方函数 ...

    那么,我现在遇到另外一个问题,用KE06自带的库的UART_SendWait这个函数,目前我按照协议发送8个字节,利用串口调试助手观察去只能收到7个,这个能帮忙下吗,另外我这边是这样的KE06全部3个串口都使用了,并且每个串口波特率都不相同的,能帮忙看下么
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2018-8-1 17:41:27 | 显示全部楼层
    你好我不是大神 发表于 2018-8-1 17:05
    那么,我现在遇到另外一个问题,用KE06自带的库的UART_SendWait这个函数,目前我按照协议发送8个字节,利 ...

    给出代码,我帮你看看
    开心
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    40

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    202
    最后登录
    2020-7-2
     楼主| 发表于 2018-8-1 18:54:18 | 显示全部楼层
    原来的你 发表于 2018-8-1 17:41
    给出代码,我帮你看看

    这是测试的情况,具体代码我整理一下再上传
    捕获.PNG
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    40

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    202
    最后登录
    2020-7-2
     楼主| 发表于 2018-8-1 18:56:39 | 显示全部楼层
    本帖最后由 你好我不是大神 于 2018-8-1 18:58 编辑
    你好我不是大神 发表于 2018-8-1 18:54
    这是测试的情况,具体代码我整理一下再上传

    int main()
    {
      sysinit();
      UART_ConfigType sConfig;

      SIM_RemapUART0ToPTB_0_1();
      sConfig.u32SysClkHz = 40000000L;
      sConfig.u32Baudrate = 9600;
      UART_Init(UART0,&sConfig);
      UART_SetCallback(UART_HandleInt);               
      UART_EnableRxBuffFullInt(UART0);/* enable rx interrupt */
      NVIC_EnableIRQ(UART0_IRQn);
      GPIO_Init(GPIOA, GPIO_PTA1_MASK, GPIO_PinOutput);
      GPIO_PinSet(GPIO_PTA1);
      TemperatureSensor_Reg.Sensor_Addr=0x01;
      while(1)
      {
          Delay_ms(1000);
          u8  Order[8];  
          Order[0] = 0x01;
          Order[1] = 0x03;
          Order[2] = 0x00;
          Order[3] = 0x00;
          Order[4] = 0x00;
          Order[5] = 0x01;
          //Order[5] = 0x00;
          Order[6] = 0x84;
          Order[7] = 0x0A;
          UART_IO_SendWait(UART0,&Order[0],0x08);
      }
    }
    void UART_IO_SendWait(UART_Type *pUART, uint8_t *pSendBuff, uint32_t u32Length)
    {
        if(pUART == UART0)
        {
            GPIO_PinClear(GPIO_PTA1);//半双工 片选发送
        }
        Delay_ms(2);
        UART_SendWait(pUART, pSendBuff, u32Length);
        Delay_ms(2);
        if(pUART == UART0)
        {
            GPIO_PinSet(GPIO_PTA1);//半双工 片选接收
        }
    }

    使用的是半双工485芯片
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    40

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    202
    最后登录
    2020-7-2
     楼主| 发表于 2018-8-1 19:16:07 | 显示全部楼层
    你好我不是大神 发表于 2018-8-1 17:05
    那么,我现在遇到另外一个问题,用KE06自带的库的UART_SendWait这个函数,目前我按照协议发送8个字节,利 ...

    关于这个数据接收智能收到7个,已经解决了,延时问题,但是目前串口出问题的这个还没解决,并且没解决的那个是采用的是全双工485芯片,有什么建议吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2018-8-1 21:05:09 | 显示全部楼层
    本帖最后由 原来的你 于 2018-8-1 21:09 编辑
    你好我不是大神 发表于 2018-8-1 19:16
    关于这个数据接收智能收到7个,已经解决了,延时问题,但是目前串口出问题的这个还没解决,并且没解决的 ...

    程序不是你这样写的,问题很大,加入nxp群,告诉你怎么做
    开心
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 13:03 , Processed in 0.112099 second(s), 32 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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