搜索
bottom↓
回复: 32

新唐N76E003AT20,uart0和1同时开启中接收,uart1接收不到数据,求解

[复制链接]

出0入0汤圆

发表于 2018-1-15 10:31:48 | 显示全部楼层 |阅读模式
应用需要两个uart,使用新唐N76E003AT20,两个uart开启中断接收的时候,uart1中断接收不到数据。使用串口调试软件。发送6字节到上位机,上位机收到后发送回N76E003AT20,在不关闭uart0中断接收的情况下,无法接收到数据,有没用过的。求解

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出45入38汤圆

发表于 2018-1-15 11:12:05 | 显示全部楼层
STC8F2K08S2-35I-TSSOP20/SOP16   1.2/1.15,大批量稳定供货,稳定价格
你有没有心动,欢迎来电0513-55012933     qq:2379747610

出0入0汤圆

 楼主| 发表于 2018-1-15 12:30:19 | 显示全部楼层
国学芯用 发表于 2018-1-15 11:12
STC8F2K08S2-35I-TSSOP20/SOP16   1.2/1.15,大批量稳定供货,稳定价格
你有没有心动,欢迎来电0513-550129 ...

没AD,没PWM,用不了

出0入0汤圆

发表于 2018-1-15 12:41:30 | 显示全部楼层
有一个串口是和调试口复用的,是不是这个的影响呀。

出0入0汤圆

 楼主| 发表于 2018-1-15 13:34:10 | 显示全部楼层
LVmcu 发表于 2018-1-15 12:41
有一个串口是和调试口复用的,是不是这个的影响呀。

uart1是与调试口共用,但是不是在调试的时候测试的

出0入0汤圆

 楼主| 发表于 2018-1-15 14:39:21 | 显示全部楼层
cc2666 发表于 2018-1-15 14:27
弱弱的问下N76E003AT20开发环境,keil多少?

4.7版本

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2018-1-15 16:16:24 | 显示全部楼层
cc2666 发表于 2018-1-15 14:52
谢谢,刚刚准备入坑。。。

入坑之后,你会发现,真的很多坑

出0入0汤圆

发表于 2018-1-15 17:52:33 来自手机 | 显示全部楼层
我两个串口一起用没问题,另外发现用它的库函数定义波特率误差太大了,小了很多

出0入0汤圆

发表于 2018-1-15 17:54:10 来自手机 | 显示全部楼层
可以把优先级调高试试

出0入0汤圆

 楼主| 发表于 2018-1-15 18:22:36 | 显示全部楼层
mo_fish 发表于 2018-1-15 17:54
可以把优先级调高试试

你设置成中断接收没?

出0入0汤圆

发表于 2018-1-15 18:40:24 | 显示全部楼层
eaglelpx 发表于 2018-1-15 18:22
你设置成中断接收没?

////    // wifi uart       
    InitialUART0_Timer1(59000);  //57600
          set_PS;  
          set_ES;
       
    // bt uart       
          InitialUART1_Timer3(40000);  //38400
                set_PS_1;  
                set_ES_1;

出0入0汤圆

 楼主| 发表于 2018-1-15 19:34:44 | 显示全部楼层
mo_fish 发表于 2018-1-15 18:40
////    // wifi uart       
    InitialUART0_Timer1(59000);  //57600
          set_PS;  

加set_PS_1;后发送都发送不了

出0入0汤圆

发表于 2018-1-15 19:50:02 | 显示全部楼层
以前好像也碰到这种怪现象,两个串口同时工作,单片机经常死机,后来用STM32了  5个串口都没事

出0入0汤圆

 楼主| 发表于 2018-1-15 20:31:28 | 显示全部楼层
mo_fish 发表于 2018-1-15 17:52
我两个串口一起用没问题,另外发现用它的库函数定义波特率误差太大了,小了很多 ...

我设置为115200波特率,没多少误差,它有两种频率,你设为16.6Mhz就可以了

出0入36汤圆

发表于 2018-1-16 21:47:22 来自手机 | 显示全部楼层
最后治好没?

出0入53汤圆

发表于 2018-1-17 08:24:49 来自手机 | 显示全部楼层
mo_fish 发表于 2018-1-15 17:52
我两个串口一起用没问题,另外发现用它的库函数定义波特率误差太大了,小了很多 ...

他的adc
能稳定到多少位

出0入0汤圆

 楼主| 发表于 2018-1-17 08:34:01 | 显示全部楼层

没治好.....想换成查询了。估计我设波特率太高了  115200

出0入36汤圆

发表于 2018-1-17 18:59:24 | 显示全部楼层
eaglelpx 发表于 2018-1-17 08:34
没治好.....想换成查询了。估计我设波特率太高了  115200

找新塘的售后技术支持。

出0入0汤圆

发表于 2018-1-17 19:35:20 | 显示全部楼层
eaglelpx 发表于 2018-1-17 08:34
没治好.....想换成查询了。估计我设波特率太高了  115200

在初始化uart0函数里的srt_TI注释掉

出0入0汤圆

 楼主| 发表于 2018-1-17 20:29:13 | 显示全部楼层
mo_fish 发表于 2018-1-17 19:35
在初始化uart0函数里的srt_TI注释掉

你初始化怎么样的。这个好像没set_TI的

出0入0汤圆

 楼主| 发表于 2018-1-17 20:29:36 | 显示全部楼层
redworlf007 发表于 2018-1-17 18:59
找新塘的售后技术支持。

找了,被无视了.....

出0入29汤圆

发表于 2018-1-17 22:32:17 | 显示全部楼层
我也在调试新唐的MCU,两个串口可以同时开接收中断,但是不能开发送中断,否则就不行

出0入0汤圆

 楼主| 发表于 2018-1-18 08:17:13 | 显示全部楼层
sunrn123 发表于 2018-1-17 22:32
我也在调试新唐的MCU,两个串口可以同时开接收中断,但是不能开发送中断,否则就不行 ...

貌似这货不能单独开发送或者接收中断的

出0入0汤圆

发表于 2018-1-18 08:54:12 | 显示全部楼层
eaglelpx 发表于 2018-1-17 20:29
你初始化怎么样的。这个好像没set_TI的
  1. //----------------------------------------------------------------------------------
  2. // UART0 baud rate initial setting
  3. //----------------------------------------------------------------------------------
  4. void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1
  5. {
  6.                 P06_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  7.                 P07_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  8. //          P06_PushPull_Mode;
  9. //          P07_Input_Mode;
  10.        
  11.     SCON = 0x50;             //UART0 Mode1,REN=1,TI=1
  12.     TMOD |= 0x20;            //Timer1 Mode1
  13.    
  14.     set_SMOD;                //UART0 Double Rate Enable
  15.     set_T1M;
  16.     clr_BRCK;                //Serial port 0 baud rate clock source = Timer1

  17. #ifdef FOSC_160000
  18.     TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
  19. #endif           
  20. #ifdef FOSC_166000
  21.     TH1 = 256 - (1037500/u32Baudrate);                              /*16.6 MHz */
  22. #endif
  23.     set_TR1;
  24. //                set_TI;                                                //For printf function must setting TI = 1
  25. }

  26. //----------------------------------------------------------------------------------
  27. // UART1 baud rate initial setting
  28. //----------------------------------------------------------------------------------
  29. void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
  30. {
  31.                 P02_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  32.                 P16_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  33.        
  34.           SCON_1 = 0x50;           //UART1 Mode1,REN_1=1,TI_1=1
  35.     T3CON = 0x08;           //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
  36.                 clr_BRCK;
  37.        
  38. #ifdef FOSC_160000
  39.                 RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);                  /*16 MHz */
  40.                 RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1);                        /*16 MHz */
  41. #endif
  42. #ifdef FOSC_166000
  43.                 RH3    = HIBYTE(65536 - (1037500/u32Baudrate));                          /*16.6 MHz */
  44.                 RL3    = LOBYTE(65536 - (1037500/u32Baudrate));                                /*16.6 MHz */
  45. #endif
  46.     set_TR3;         //Trigger Timer3
  47. }


  48. void SerialPort0_ISR(void) interrupt 4
  49. {
  50.           uint8_t data rx_dat;
  51.        
  52.     if(RI==1)
  53.     {   
  54. //        clr_RI;                        /* if reception occur */
  55.                           rx_dat = SBUF;                        /* clear reception flag for next reception */
  56.                           if(Mcu_RcvWiFiCmd(rx_dat))
  57.                                 {
  58.             WiFiCmdRcvFinishFlag = TRUE;
  59.         }       
  60.         clr_RI;                               
  61.     }
  62.     if(TI==1)
  63.     {
  64.                           TxFlag =0;
  65.         clr_TI;                             /* if emission occur */
  66.     }
  67. }

  68. void SerialPort1_ISR(void) interrupt 15
  69. {
  70.           uint8_t data rx_dat_1;
  71.     if(RI_1==1)
  72.     {                                       /* if reception occur */
  73.                           rx_dat_1 = SBUF_1;
  74. //                          clr_RI_1;
  75.                           if(Mcu_RcvBTCmd(rx_dat_1))
  76.                                 {
  77.             BTCmdRcvFinishFlag = TRUE;
  78.         }       
  79.         clr_RI_1;                             /* clear reception flag for next reception */
  80. //                          P12 = ~P12;
  81.     }
  82.     if(TI_1==1)
  83.     {
  84.                           Tx1Flag = 0;
  85.         clr_TI_1;                             /* if emission occur */
  86.     }
  87. }
复制代码

出0入0汤圆

 楼主| 发表于 2018-1-18 09:07:42 | 显示全部楼层

都一样的,奇怪啊。中断的清除TI,还能发送?我这里清除了,就不能发送了

出0入0汤圆

发表于 2018-1-18 09:45:18 | 显示全部楼层
        InitialUART1_Timer3(9600);
        InitialUART0_Timer3(9600);
我这边两个串口收发没有问题的,因为没有设置为16.6,对波特率也没什么要求就用了9600.
串口1因为是复用,所以接在上面的其他东西都要拔掉,只接串口

出0入0汤圆

 楼主| 发表于 2018-1-18 09:53:05 | 显示全部楼层
shiang 发表于 2018-1-18 09:45
InitialUART1_Timer3(9600);
        InitialUART0_Timer3(9600);
我这边两个串口收发没有问题的,因为没有设置为 ...

通过USB转串口发送到电脑测的,没接其他东西了

出0入0汤圆

发表于 2018-1-18 09:58:11 | 显示全部楼层
eaglelpx 发表于 2018-1-18 09:53
通过USB转串口发送到电脑测的,没接其他东西了

是怎么给板子供电的呢?

出0入0汤圆

 楼主| 发表于 2018-1-18 10:07:56 | 显示全部楼层
shiang 发表于 2018-1-18 09:58
是怎么给板子供电的呢?

USB供电。就接了TX1 RX1  GND VCC 测试

出0入0汤圆

发表于 2018-1-18 10:41:28 | 显示全部楼层
eaglelpx 发表于 2018-1-18 10:07
USB供电。就接了TX1 RX1  GND VCC 测试

奇怪了,我用这个芯片可以同时跑4个串口9600的没什么问题。发送中断和接收中断都是开启的。
我还是建议你用其他稳压电源来供电试试

出0入0汤圆

发表于 2018-3-12 17:38:15 来自手机 | 显示全部楼层
115200没有问题,两路同时用的话不能接nulink。而且内部上拉非常弱。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 15:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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