[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】+串行通讯及应用

[复制链接]
762|0
 楼主| jinglixixi 发表于 2022-11-8 10:41 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2022-11-8 10:53 编辑

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

图1  UART引脚占用

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

图2所用引脚

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

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

  20. void USART0_initIO(void)
  21. {
  22.     //Default Value for output should be 1
  23.     PORTD.OUTSET = PIN4_bm;
  24.     //Clear PORTMUX
  25.     PORTMUX.USARTROUTEA &= ~(PORTMUX_USART0_gm);
  26.     //Select PD4/PD5
  27.     PORTMUX.USARTROUTEA |= PORTMUX_USART0_ALT3_gc;
  28.     //Set PD4 as Output
  29.     PORTD.DIRSET = PIN4_bm;
  30.     //Set PD5 as Input
  31.     PORTD.DIRCLR = PIN5_bm;
  32. }

  33. int main(void) {
  34.     int i,j,k;
  35.     //Setup LED
  36.     LED_init();
  37.     LED_toggle ();
  38.     //Setup USART
  39.     USART0_initIO();
  40.     USART0_init();
  41.     //Enable TX and RX
  42.     USART0_enableTX();
  43.     USART0_enableRX();
  44.     while (1)
  45.     {
  46.       for(j=0;j<1000;j++)
  47.          for(i=0;i<1000;i++);
  48.       LED_toggle ();
  49.       USART_sendString("Welcome to the LED Command Processor!\r\n");
  50.     }
  51. }

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

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

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

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

图6变换波特率

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

MP3播放的演示视频:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部