这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置

共1条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置

工程师
2025-12-01 22:05:39     打赏

Microchip公司的SAME51系列芯片是cortex-m4内核,带有可以配置为UART\I2C\SPI\LIN等不同模块的SERCOM模块。其引脚功能框图如下:

image.png

目前关于这个开发板的资料不是很多,本次提供了MCC图形化配置工具配置SERCOM5、SERCOM3为UART模式。

其中SERCOM5使用的引脚为PB16: TX, PB17: RX。SERCOM3使用的引脚为PA22: TX, PA23: RX。

MCC图形化配置工具:在Device Resources -> Peripherals -> SERCOM,点击SERCOM3、SERCOM5前面的绿色+号,就可以把这两个模块添加到工程中。

image.png

配置SERCOM3的参数:

image.png

image.png


配置SERCOM5的参数:

image.png


点击Generate生成代码,注意查看输出是否有

16:58:21.925    INFO: HARMONY: [ MHC                           ] Executing generate hook
16:58:21.941    INFO: *****************************************************
16:58:21.942    INFO:  Generation complete (total time: 3470 milliseconds)
16:58:21.942    INFO: *****************************************************
16:58:21.942    INFO: Generation complete.
16:58:22.890    INFO: HARMONY: [ python-print                  ] preGenerateEvent
16:58:22.890    INFO: HARMONY: [ python-print                  ] interfaceValidationEvent
16:58:22.890    INFO: HARMONY: [ python-print                  ] processDataModel
16:58:22.891    INFO: HARMONY: [ python-print                  ] postFinalProcessing


SYS_Initialize()中有SERCOM5、SERCOM3的初始化代码:

void SERCOM5_USART_Initialize( void )
{
    /*
     * Configures USART Clock Mode
     * Configures TXPO and RXPO
     * Configures Data Order
     * Configures Standby Mode
     * Configures Sampling rate
     * Configures IBON
     */

    SERCOM5_REGS->USART_INT.SERCOM_CTRLA = SERCOM_USART_INT_CTRLA_MODE_USART_INT_CLK | SERCOM_USART_INT_CTRLA_RXPO(0x1UL) | SERCOM_USART_INT_CTRLA_TXPO(0x0UL) | SERCOM_USART_INT_CTRLA_DORD_Msk | SERCOM_USART_INT_CTRLA_IBON_Msk | SERCOM_USART_INT_CTRLA_FORM(0x0UL) | SERCOM_USART_INT_CTRLA_SAMPR(0UL) ;

    /* Configure Baud Rate */
    SERCOM5_REGS->USART_INT.SERCOM_BAUD = (uint16_t)SERCOM_USART_INT_BAUD_BAUD(SERCOM5_USART_INT_BAUD_VALUE);

    /*
     * Configures RXEN
     * Configures TXEN
     * Configures CHSIZE
     * Configures Parity
     * Configures Stop bits
     */
    SERCOM5_REGS->USART_INT.SERCOM_CTRLB = SERCOM_USART_INT_CTRLB_CHSIZE_8_BIT | SERCOM_USART_INT_CTRLB_SBMODE_1_BIT | SERCOM_USART_INT_CTRLB_RXEN_Msk | SERCOM_USART_INT_CTRLB_TXEN_Msk;

    /* Wait for sync */
    while((SERCOM5_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U)
    {
        /* Do nothing */
    }


    /* Enable the UART after the configurations */
    SERCOM5_REGS->USART_INT.SERCOM_CTRLA |= SERCOM_USART_INT_CTRLA_ENABLE_Msk;

    /* Wait for sync */
    while((SERCOM5_REGS->USART_INT.SERCOM_SYNCBUSY) != 0U)
    {
        /* Do nothing */
    }
}


使能SERCOM5、SERCOM3

    SERCOM5_USART_Enable();
    SERCOM3_USART_Enable();


通过下面简单的代码来使用双串口收发:

    printf("\r\nEEPW-SAME51 DUAL SERIAL");

    sprintf(sercom3TxBuf, "SERCOM3");
    SERCOM3_USART_Write(sercom3TxBuf, sizeof(sercom3TxBuf));  
    
    while(1){
        SERCOM3_USART_Read(sercom3RxBuf, sizeof(sercom3RxBuf));
        printf(sercom3RxBuf);
    
    }


打开两个串口助手,下图中的上半部分的nEDBG CMSIS-DAP是SERCOM5,下半部分是SERCOM3实例化为UART.

CAN RX.gif


总结:

SAME51单片机搭配MCC图形化配置工具,可以快速搭建双串口应用。代码自动生成技术节省了大量的开发时间并且提高了代码质量。




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]