[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】+串行通讯及应用

[复制链接]
425|0
手机看帖
扫描二维码
随时随地手机跟帖
jinglixixi|  楼主 | 2022-11-8 10:41 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2022-11-8 10:53 编辑

AVR64DD32开发板配有串行通讯功能,通过它可实现PRINT打印及数据收发功能等。
其中UART0占用的是PD4PD5UART1占用的是PC0PC1,见图1所示。
1.jpg
图1  UART引脚占用

使用UART0与外部的USB转TTL模块相连接,则可进行串行通讯及PRINT打印功能的测试,所用引脚见图2所示。
2.jpg
图2所用引脚

由于串行通讯程序的程序如下:
#define LED_turnOn() do { PORTF.OUTCLR = PIN5_bm; } while (0)
#define LED_turnOff() do { PORTF.OUTSET = PIN5_bm; } while (0)
#define LED_toggle() do { PORTF.OUTTGL = PIN5_bm; } while (0)

void USART0_init(void)
{
    //Init Callback
    rxHandler = 0;
    //Enable Run in Debug
    USART0.DBGCTRL = USART_DBGRUN_bm;
    //Enable RX Interrupts
    USART0.CTRLA = USART_RXCIE_bm;
    //Async Mode, No Parity, 1 Stop Bit, 8 bit TX
    USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | USART_PMODE_DISABLED_gc | USART_SBMODE_1BIT_gc | USART_CHSIZE_8BIT_gc;
    //Baud for 115,200 at 4 MHz Clock
    USART0.BAUD = 139;
    //Enable Normal Mode for USART
    USART0.CTRLB = USART_RXMODE_NORMAL_gc;
    //Note: Call enableTX/enableRX after this function
}

void USART0_initIO(void)
{
    //Default Value for output should be 1
    PORTD.OUTSET = PIN4_bm;
    //Clear PORTMUX
    PORTMUX.USARTROUTEA &= ~(PORTMUX_USART0_gm);
    //Select PD4/PD5
    PORTMUX.USARTROUTEA |= PORTMUX_USART0_ALT3_gc;
    //Set PD4 as Output
    PORTD.DIRSET = PIN4_bm;
    //Set PD5 as Input
    PORTD.DIRCLR = PIN5_bm;
}

int main(void) {
    int i,j,k;
    //Setup LED
    LED_init();
    LED_toggle ();
    //Setup USART
    USART0_initIO();
    USART0_init();
    //Enable TX and RX
    USART0_enableTX();
    USART0_enableRX();
    while (1)
    {
      for(j=0;j<1000;j++)
         for(i=0;i<1000;i++);
      LED_toggle ();
      USART_sendString("Welcome to the LED Command Processor!\r\n");
    }
}

经程序的编译与下载,其运行结果如图3所示。
3.jpg
图3运行结果

此外,可以通过语句USART0_sendByte('C')来发送字符或字节数据,见图4和图5所示。
4.jpg
图4发送字符
5.jpg
5 发送字节指令
发送字节指令的测试程序如下:

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

while(1)
{
        for(i=0;i<10;i++)
        {
           USART0_sendByte(cmd3[i]);
           for(j=0;j<100;j++);
        }
        for(j=0;j<1000;j++)  for(i=0;i<1000;i++);
}
在串口设备中,有许多是采用9600bps的波特率,这通过波特率的设置也是可以达到的,见图6所示。
6.jpg
图6变换波特率

以串口控制MP3语音模块的线路连接见图7所示,当触摸按键时,即播放第一首,再次触摸则播放下一首。
7.jpg
图7线路连接

MP3播放的演示视频:

使用特权

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

本版积分规则

446

主题

2675

帖子

37

粉丝