打印

HC32L136K8TA的LpUart通信不上

[复制链接]
2649|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
D_dx1|  楼主 | 2021-6-10 08:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
把官方历程lpuart_int里面的LpUart1修改为我实际使用的LpUart0(PC04-TXD   PC05-RXD),一直通信不上,发送接收都没反应,硬件排查没什么问题。用另外1个非低功耗的串口Uart0是正常的。
/******************************************************************************
* Include files
******************************************************************************/
#include "ddl.h"
#include "lpuart.h"
#include "lpm.h"
#include "gpio.h"
#include "sysctrl.h"

/******************************************************************************
* Local pre-processor symbols/macros ('#define')                           
******************************************************************************/

/******************************************************************************
* Global variable definitions (declared in header file with 'extern')
******************************************************************************/

/******************************************************************************
* Local type definitions ('typedef')                                         
******************************************************************************/

/******************************************************************************
* Local function prototypes ('static')
******************************************************************************/

/******************************************************************************
* Local variable definitions ('static')                                      *
******************************************************************************/
uint8_t u8TxData[2] = {0x00,0x55};
uint8_t u8RxData = 00;
/*****************************************************************************
* Function implementation - global ('extern') and local ('static')
******************************************************************************/
void App_LpUartPortCfg(void);
void App_LpUartCfg(void);
/**
******************************************************************************
** \brief  Main function of project
**
** \return uint32_t return value, if needed
**
** This sample
**
******************************************************************************/
int32_t main(void)
{  
    ///< 端口配置
    App_LpUartPortCfg();

    ///< LPUART配置
    App_LpUartCfg();

    //发送数据
    LPUart_SendDataIt(M0P_LPUART0, 0x55);  

    while(1)
    {
        ;
    }
}

///<LPUART0 中断服务函数
void LpUart0_IRQHandler(void)
{
    if(LPUart_GetStatus(M0P_LPUART0, LPUartTC))
    {
        LPUart_ClrStatus(M0P_LPUART0, LPUartTC);   ///<清发送中断请求

        LPUart_DisableIrq(M0P_LPUART0,LPUartTxIrq);///<禁止发送中断
        LPUart_EnableIrq(M0P_LPUART0,LPUartRxIrq); ///<使能接收中断
    }

    if(LPUart_GetStatus(M0P_LPUART0, LPUartRC))    ///接收数据
    {
        LPUart_ClrStatus(M0P_LPUART0, LPUartRC);   ///<清接收中断请求
        u8RxData = LPUart_ReceiveData(M0P_LPUART0);///读取数据

        LPUart_DisableIrq(M0P_LPUART0,LPUartRxIrq);///<禁止接收中断
        LPUart_EnableIrq(M0P_LPUART0,LPUartTxIrq); ///<使能发送中断

        LPUart_SendDataIt(M0P_LPUART0, ~u8RxData); ///把接收数据取反,并发送      
    }
}

///< LPUART配置
void App_LpUartCfg(void)
{
    stc_lpuart_cfg_t  stcCfg;

    DDL_ZERO_STRUCT(stcCfg);

    ///<外设模块时钟使能
    Sysctrl_SetPeripheralGate(SysctrlPeripheralLpUart0,TRUE);   

    ///<LPUART 初始化
    stcCfg.enStopBit = LPUart1bit;                   ///<1停止位   
    stcCfg.enMmdorCk = LPUartEven;                   ///<偶校验
    stcCfg.stcBaud.enSclkSel = LPUartMskPclk;        ///<传输时钟源
    stcCfg.stcBaud.u32Sclk = Sysctrl_GetPClkFreq();  ///<PCLK获取
    stcCfg.stcBaud.enSclkDiv = LPUartMsk4Or8Div;     ///<采样分频
    stcCfg.stcBaud.u32Baud = 9600;                   ///<波特率
    stcCfg.enRunMode = LPUartMskMode3;               ///<工作模式
    LPUart_Init(M0P_LPUART0, &stcCfg);

    ///<LPUART 中断使能
    LPUart_ClrStatus(M0P_LPUART0,LPUartRC);          ///<清接收中断请求
    LPUart_ClrStatus(M0P_LPUART0,LPUartTC);          ///<清发送中断请求
    LPUart_DisableIrq(M0P_LPUART0,LPUartRxIrq);      ///<禁止接收中断
    LPUart_EnableIrq(M0P_LPUART0,LPUartTxIrq);       ///<使能发送中断
    EnableNvic(LPUART0_IRQn,IrqLevel3,TRUE);         ///<系统中断使能
}

///< 端口配置
void App_LpUartPortCfg(void)
{
    stc_gpio_cfg_t stcGpioCfg;

    DDL_ZERO_STRUCT(stcGpioCfg);

    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);

    ///<TX
    stcGpioCfg.enDir =  GpioDirOut;
    Gpio_Init(GpioPortC,GpioPin4,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortC,GpioPin4,GpioAf1); //配置PC04为LPUART0_TX

    //<RX
    stcGpioCfg.enDir =  GpioDirIn;
    Gpio_Init(GpioPortC,GpioPin5,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortC,GpioPin5,GpioAf1); //配置PC05为LPUART0_RX
}

/******************************************************************************
* EOF (not truncated)
******************************************************************************/




使用特权

评论回复
沙发
18621057708| | 2021-6-10 10:30 | 只看该作者
使用相同的芯片型号测试,将您提供的代码直接复制替换官方例程的main函数,接线正确的情况下收发正常。
可以用同样的方法试一下,或者检查一下连线或更换芯片

7241260c1792ab8559.png (274.87 KB )

7241260c1792ab8559.png

使用特权

评论回复
板凳
D_dx1|  楼主 | 2021-6-11 10:57 | 只看该作者
18621057708 发表于 2021-6-10 10:30
使用相同的芯片型号测试,将您提供的代码直接复制替换官方例程的main函数,接线正确的情况下收发正常。
可 ...

现在可以了,谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝