[技术问答] N76E003收发串口问题

[复制链接]
4237|18
 楼主| wxfyyzy520 发表于 2017-9-28 15:40 | 显示全部楼层 |阅读模式
做项目需要用到新塘N76E003,用来接收时发现有时候接收不了,做了一个N76E003的发送测试,发现发送出错这是什么问题
 楼主| wxfyyzy520 发表于 2017-9-28 15:42 | 显示全部楼层
如图

如图

如图
 楼主| wxfyyzy520 发表于 2017-9-28 15:48 | 显示全部楼层
{ int a=0;
Set_All_GPIO_Quasi_Mode;
InitialUART0_Timer3_Int(115200);

  while (1)
  {
    UART0_putc(a++);
  }
}
yiyigirl2014 发表于 2017-9-28 15:53 | 显示全部楼层
代码全是自己写的?
yiyigirl2014 发表于 2017-9-28 15:53 | 显示全部楼层
下载官方的BSP了吗,里面有收发例子,参考一下,看看你哪儿漏了。
 楼主| wxfyyzy520 发表于 2017-9-28 15:53 | 显示全部楼层
每个上升沿的前面是什么
捕获.PNG
yiyigirl2014 发表于 2017-9-28 15:55 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 UART-0 Mode1 demo code
  14. //***********************************************************************************************************

  15. #include <stdio.h>
  16. #include "N76E003.h"
  17. #include "Common.h"
  18. #include "Delay.h"
  19. #include "SFR_Macro.h"
  20. #include "Function_Define.h"

  21. /******************************************************************************
  22. * FUNCTION_PURPOSE: Serial interrupt, echo received data.
  23. * FUNCTION_INPUTS : P0.7(RXD) serial input
  24. * FUNCTION_OUTPUTS: P0.6(TXD) serial output
  25. * Following setting in Common.c
  26. ******************************************************************************/
  27. #if 0
  28. //void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1
  29. //{
  30. //                P06_Quasi_Mode;               
  31. //                P07_Quasi_Mode;
  32. //       
  33. //    SCON = 0x52;     //UART0 Mode1,REN=1,TI=1
  34. //    TMOD |= 0x20;    //Timer1 Mode1
  35. //   
  36. //    set_SMOD;        //UART0 Double Rate Enable
  37. //    set_T1M;
  38. //    clr_BRCK;        //Serial port 0 baud rate clock source = Timer1

  39. //
  40. //#ifdef FOSC_160000
  41. //    TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
  42. //#endif           
  43. //    set_TR1;
  44. //}
  45. ////---------------------------------------------------------------
  46. //void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
  47. //{
  48. //                P06_Quasi_Mode;
  49. //                P07_Quasi_Mode;       
  50. //       
  51. //    SCON = 0x52;     //UART0 Mode1,REN=1,TI=1
  52. //    set_SMOD;        //UART0 Double Rate Enable
  53. //    T3CON &= 0xF8;   //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1)
  54. //    set_BRCK;        //UART0 baud rate clock source = Timer3

  55. //#ifdef FOSC_160000
  56. //        RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);                  /*16 MHz */
  57. //  RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1);                        /*16 MHz */
  58. //#endif
  59. //    set_TR3;         //Trigger Timer3
  60. //}
  61. #endif

  62. /*******************************************************************************
  63. * FUNCTION_PURPOSE: Main function
  64. ******************************************************************************/
  65. void main (void)
  66. {

  67. #if 0       
  68.     InitialUART0_Timer1(9600);                                                //UART0 Baudrate from Timer1
  69.     while(1)
  70.     Send_Data_To_UART0(0x55);
  71. #else
  72.                 InitialUART0_Timer3(115200);                                        //UART0 Baudrate from Timer3
  73.     while(1)
  74.     Send_Data_To_UART0(0x55);
  75. #endif
  76.                        

  77.                
  78.                
  79. }
  80.   
 楼主| wxfyyzy520 发表于 2017-9-28 16:20 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.

//  Date   : Apr/21/2016
//***********************************************************************************************************

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

//----------------------------------------------------------------------------------
// UART0 baud rate initial setting
//----------------------------------------------------------------------------------
void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1
{
 楼主| wxfyyzy520 发表于 2017-9-28 16:20 | 显示全部楼层

我的 SCON = 0x50;     //UART0 Mode1,REN=1,TI=1
    set_SMOD;        //UART0 Double Rate Enable
    T3CON &= 0xF8;   //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1)
和你的0x52有点区别啊
 楼主| wxfyyzy520 发表于 2017-9-28 17:00 | 显示全部楼层
会不会是晶振频率的问题?
yiyigirl2014 发表于 2017-9-28 17:23 | 显示全部楼层
wxfyyzy520 发表于 2017-9-28 17:00
会不会是晶振频率的问题?

也有可能是晶振问题吧,这个带内部振荡器不,试试内部的。
 楼主| wxfyyzy520 发表于 2017-9-28 17:31 | 显示全部楼层
默认一个16.67Mhz   一个10K的显示为9.56KHZ
 楼主| wxfyyzy520 发表于 2017-9-28 17:40 | 显示全部楼层
115200的频率应该为 8.68   我的为8.19   
座机呀 发表于 2017-10-1 13:16 | 显示全部楼层
单片机写代码不同于纯软件,没有硬件基础,有的时候出了问题都无从下手
山东电子小菜鸟 发表于 2017-10-1 14:36 | 显示全部楼层
感谢分享
wahahaheihei 发表于 2017-10-2 21:45 来自手机 | 显示全部楼层
最后确定是晶振问题吗?
cabbageybc 发表于 2018-1-6 09:41 | 显示全部楼层
感觉N76E003的串口有BUG 要么就是官方资料没有描述清楚,已经调整内部16.6M 依然出现过高的误码率,第一次遇到这么恶心的,16M了 跑个115200波特率还这么高误码率
smilefenfen 发表于 2018-4-18 19:08 | 显示全部楼层
你们测试N76E003串口都是用的什么软件啊,我用串口助手怎么什么也没有呢
xuanhuanzi 发表于 2018-4-20 22:33 | 显示全部楼层
逻辑分析仪?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部