212|1

1509

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【MCXA156开发板测评】+串口通讯及其应用 [复制链接]

本帖最后由 jinglixixi 于 2025-1-15 22:53 编辑

MCXA156开发板提供了串口通讯功能,利用它可实现数据的收发及串口设备的控制。

进行数据发送的函数为:

status_t LPUART_WriteBlocking(LPUART_Type *base, const uint8_t *data, size_t length)
{
    assert(NULL != data);
    const uint8_t *dataAddress = data;
    size_t transferSize        = length;
#if UART_RETRY_TIMES
    uint32_t waitTimes;
#endif
    while (0U != transferSize)
    {
#if UART_RETRY_TIMES
        waitTimes = UART_RETRY_TIMES;
        while ((0U == (base->STAT & LPUART_STAT_TDRE_MASK)) && (0U != --waitTimes))
#else
        while (0U == (base->STAT & LPUART_STAT_TDRE_MASK))
#endif
        {
        }
#if UART_RETRY_TIMES
        if (0U == waitTimes)
        {
            return kStatus_LPUART_Timeout;
        }
#endif
        base->DATA = *(dataAddress);
        dataAddress++;
        transferSize--;
    }
#if UART_RETRY_TIMES
    waitTimes = UART_RETRY_TIMES;
    while ((0U == (base->STAT & LPUART_STAT_TC_MASK)) && (0U != --waitTimes))
#else
    while (0U == (base->STAT & LPUART_STAT_TC_MASK))
#endif
    {
    }
#if UART_RETRY_TIMES
    if (0U == waitTimes)
    {
        return kStatus_LPUART_Timeout;
    }
#endif
    return kStatus_Success;
}

实现串口0收发功能测试的主程序为:

int main(void)
{
    uint8_t ch;
    lpuart_config_t config;
    BOARD_InitPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();
    LPUART_GetDefaultConfig(&config);
    config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
    config.enableTx     = true;
    config.enableRx     = true;
    LPUART_Init(DEMO_LPUART, &config, DEMO_LPUART_CLK_FREQ);
    LPUART_WriteBlocking(DEMO_LPUART, txbuff, sizeof(txbuff) - 1);
    while (1)
    {
        LPUART_ReadBlocking(DEMO_LPUART, &ch, 1);
        LPUART_WriteBlocking(DEMO_LPUART, &ch, 1);
    }
}

该程序的功能为以115200的波特率进行收发测试,每接收一个字节的数据就原样进行回馈性发送。

在使用串口调试工具的情况下,其测试效果如图1所示,由此可见收发内容完全一致,可用来字节数据的传送。

 

图1 收发测试

 

将波特率设为9600bps的情况下,则可控制MP3语音模块的播放,其控制指令是存放在数组中,即:

uint8_t cmd3[] = {0X7E, 0xFF, 0x06, 0X03, 00, 00, 01, 0xFE, 0xF7, 0XEF};

在注销掉接收语句后,将发送语句改为:

LPUART_WriteBlocking(DEMO_LPUART, cmd3, 10);

这样,就可实现对MP3语音模块的播放控制。

修改后的主程序为:

int main(void)
{
    uint8_t ch;
    uint8_t cmd3[] = {0X7E, 0xFF, 0x06, 0X03, 00, 00, 01, 0xFE, 0xF7, 0XEF};
    lpuart_config_t config;
    BOARD_InitPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();
    LPUART_GetDefaultConfig(&config);
    config.baudRate_Bps = 9600U;
    config.enableTx     = true;
    config.enableRx     = true;
    LPUART_Init(DEMO_LPUART, &config, DEMO_LPUART_CLK_FREQ);
	LPUART_WriteBlocking(DEMO_LPUART, cmd3, 10);
	while (1);
}

经测试,其效果如图2所示。

 

图2 控制测试

 

此外,由于开发板具有PWM调节功能,本打算用来进行云台控制,可很难设置到双轴云台的工作频率。为此,改为用带串口控制功能的PWM模块来实现。

该模块是通过串口来接收控制指令,以控制2个通道的PWM输出。在连接舵机的情况下,可顺利地实现双轴云台的调节控制。

该模块工作的通讯波特率为9600bps,舵机工作的频率为 50Hz。

为便于调节控制,是将指令存放于指令数组中,其格式为:

uint8_t MLF[7]={'S','1','F','0','5','0','T'}; 

uint8_t MLP[7]={'S','1','D','0','0','4','T'}; 

 

其中,数组MLF[]用于存放工作频率的设置指令,数组MLP[]则用于存放转动角度的设置指令。

指令中S1用于指定通道1的参数,S21用于指定通道2的参数。

在特定的连接情况下,通道1是控制云台的上下俯仰角度,通道2是控制云台在水平上的旋转角度。

由于所用的串口0是供虚拟串口来使用的,要进行使用必须通过迷你型的调试口J24来引出。

 

图3  所用接口

 

在完成整体电路连接的情况下,其调节效果如图4和图5所示。

 

图4 姿态1

 

 

图5  姿态2

 

以触摸ISP按键调节舵机角度为例,设置工作频率的语句为:

LPUART_WriteBlocking(DEMO_LPUART, MLF, 7);

实现按键调节舵机角度的程序为:

i=3;

while(1)

{

      if ((GPIO_PinRead(BOARD_SW_GPIO, BOARD_SW_GPIO_PIN))==0)

      {

            MLP[4]=i/10+'0';

            MLP[5]=i%10+'0';                                          

            LPUART_WriteBlocking(DEMO_LPUART, MLP, 7);

            delay_2();

            i=(i+1)%13;

            if(i==0) i=3;

            while (((GPIO_PinRead(BOARD_SW_GPIO, BOARD_SW_GPIO_PIN))==0));

      }

}

 

 

图6  串口引脚分配

 

此帖出自NXP MCU论坛

最新回复

用来进行云台控制,双轴云台的工作频率确实是不好设置,,, 还是串口控制功能的PWM模块来实现是简单操作   详情 回复 发表于 10 小时前
点赞 关注
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

用来进行云台控制,双轴云台的工作频率确实是不好设置,,,

还是串口控制功能的PWM模块来实现是简单操作

此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表