微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zstack2.5.1a配置使用串口0 备用位置2 DMA方式

zstack2.5.1a配置使用串口0 备用位置2 DMA方式

时间:10-02 整理:3721RD 点击:

串口0通讯默认位置1,P0_2和P0_3,DMA方式,参考这个我修改了协议栈配置部分代码,始终不能通过P1_4和P1_5即位置2来通讯,不知道哪里出了问题,导致配置始终不行,发出来大家帮看下:

定义HAL_UART=TRUE,修改 _hal_uart_dma.c文件里的相关参数将HAL_UART_DMA == 1里的地方都对应到uart0 lot2有如下

#if (HAL_UART_DMA == 1)
/*
#define PxOUT                      P0
#define PxIN                       P0
#define PxDIR                      P0DIR
#define PxSEL                      P0SEL
#define UxCSR                      U0CSR
#define UxUCR                      U0UCR
#define UxDBUF                     U0DBUF
#define UxBAUD                     U0BAUD
#define UxGCR                      U0GCR
#define URXxIE                     URX0IE
#define URXxIF                     URX0IF
#define UTXxIE                     UTX0IE
#define UTXxIF                     UTX0IF
*/
#define PxOUT                      P1
#define PxIN                       P1
#define PxDIR                      P1DIR
#define PxSEL                      P1SEL
#define UxCSR                      U0CSR
#define UxUCR                      U0UCR
#define UxDBUF                     U0DBUF
#define UxBAUD                     U0BAUD
#define UxGCR                      U0GCR
#define URXxIE                     URX0IE
#define URXxIF                     URX0IF
#define UTXxIE                     UTX0IE
#define UTXxIF                     UTX0IF

#if (HAL_UART_DMA == 1)
/*
#define HAL_UART_PERCFG_BIT        0x01         // USART0 on P0, Alt-1; so clear this bit.
#define HAL_UART_Px_RX_TX          0x0C         // Peripheral I/O Select for Rx/Tx.
#define HAL_UART_Px_RTS            0x20         // Peripheral I/O Select for RTS.
#define HAL_UART_Px_CTS            0x10         // Peripheral I/O Select for CTS.
*/
#define HAL_UART_PERCFG_BIT        0x01         // USART0 on P0, Alt-1; so clear this bit.
#define HAL_UART_Px_RX_TX          0x30         // Peripheral I/O Select for Rx/Tx.
#define HAL_UART_Px_RTS            0x08         // Peripheral I/O Select for RTS.
#define HAL_UART_Px_CTS            0x04         // Peripheral I/O Select for CTS.

 *****************************************************************************/
static void HalUARTInitDMA(void)
{
  halDMADesc_t *ch;

  P2DIR &= ~P2DIR_PRIPO;
  P2DIR |= HAL_UART_PRIPO;

#if (HAL_UART_DMA == 1)
  //PERCFG &= ~HAL_UART_PERCFG_BIT;    // Set UART0 I/O to Alt. 1 location on P0.
   PERCFG |= HAL_UART_PERCFG_BIT;     // Set UART1 I/O to Alt. 2 location on P1.

以上是所有修改,程序里直接

  halUARTCfg_t uartConfig;
 
  uartConfig.configured           = TRUE;
  uartConfig.baudRate             = HAL_UART_BR_115200;
  uartConfig.flowControl          = FALSE;
  uartConfig.flowControlThreshold = MT_UART_THRESHOLD;
  uartConfig.rx.maxBufSize        = MT_UART_RX_BUFF_MAX ;
  uartConfig.tx.maxBufSize        = MT_UART_TX_BUFF_MAX ;
  uartConfig.idleTimeout            = MT_UART_IDLE_TIMEOUT;
  uartConfig.intEnable                = TRUE;
  uartConfig.callBackFunc           = smd_UartProcessData;
 
  HalUARTOpen (HAL_UART_PORT_0, &uartConfig);

似乎并没有问题啊,但是串口不行,不知道哪位大神用过uart0的位置2,帮看下

后来自己又测试了下,按照上述配置是没有问题的,可以使用串口0 位置2 ,可能当初宏编错了,定义ZTOOL_P1即可

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top