微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +USART串口调试程序

+USART串口调试程序

时间:10-02 整理:3721RD 点击:

      各位中秋节快乐,今天没过节在实验室做看6748的串口程序,发完这篇就过节去了。
      根据昨天发的项目计划,今天开始第一步串口的发送数据的调试。
      串口通信这里接不介绍了,今天主要使用创龙光盘里的两个程序来进行串口调试实验。
      一、USART直接发送数据
      这个程序我们使用的程序是
      创龙DSP光盘\TL6748-EVM-data\demo\StarterWare\Application\UART1_POLL
      这个程序并通过普通的方式发送数据。不过在这里要注意的是创龙的开发板上只提供了UART0和UART2两个接口,所以我们要使用UART1时必须要单独接线。UATR接口需要用四个线,分别是V+、RXD、TXD、GND。我们根据底板原理图,找到UART1的引脚。



J2接口的16/18引脚分别是UART1_RXD和UART1_TXD。同时14和20引脚可以用作GND。3.3V的高电平在J3接口的18和20引脚。将这四个引脚连接到MAX3232串口通信模块上。通过窗口转USB线连接电脑。
电气连接如图所示



程序执行流程为:
1、使能UART1模块;
2、GPIO管脚配置;
3、配置UART1 参数:波特率 115200 数据位 8 停止位 1 无校验位;4、使能UART1;
5、发送与接收数据;

接收数据用到的函数为:Receive=UARTCharGet();
发送数据用到的函数为:UARTCharPut();
打开串口调试助手,选择串口号(右击我的电脑->设备管理器查看)。波特率选择115200。校验位N,数据位8,停止位1。打开。
打开工程UART1_POLL,Build->Bebug->导入GEL初始化->执行。串口调试助手接收到数据。


串口程序调试成功。
二、通过中断调试UART程序。
      这个程序我们使用的程序是
E:\创龙DSP\TL6748-EVM-data\demo\StarterWare\Application\UART0_INT
这个程序是通过中断来实现串口发送数据的
这个程序使用的是UART2。所以我们可以直接使用开发板上的串口。

电气连接如下


调试运行程序,可以得到和前面一样的现象。
三、为项目改进串口程序。
      为了方便项目使用,我采用UART0通过普通模式串口输出程序。我以UART1_POLL为基础,首先更改初始化设置,改成UART0使能。
      为了方便输出,我编写了一个uart_printf()函数。下次串口输出时可以直接调用此函数,方便开发。

  1. void uart_printf(char *p)
  2. {
  3.         while((*p)!='\0')
  4.         {
  5.                 UARTCharPut(SOC_UART_0_REGS, *p);
  6.             p++;
  7.         }
  8. }

复制代码


同时加入了延时函数,可以实现定时输出数据到电脑。
最后加入循环语句,保证程序在运行时不断发送数据。
最后运行结果如下。



最后给大家献上我的程序代码,挺简单,和大家分享。

  1. /*                                                                          */
  2. /*              函数声明                                                    */
  3. /*                                                                          */
  4. // 外设使能配置
  5. void PSCInit(void);

  6. // GPIO 管脚复用配置
  7. void GPIOBankPinMuxSet();
  8. // GPIO 管脚初始化
  9. void GPIOBankPinInit();

  10. // UART 初始化
  11. void UARTInit(void);

  12. // 串口输出
  13. void uart_printf(char *p);

  14. // 延时
  15. void Delay(unsigned int n);
  16. /*                                                                          */
  17. /*              主函数                                                      */
  18. /*                                                                          */
  19. int main(void)
  20. {
  21.         // 外设使能配置
  22.         PSCInit();
  23.         
  24.         // GPIO 管脚复用配置
  25.         GPIOBankPinMuxSet();

  26.         // UART 初始化
  27.         UARTInit();

  28.         // 发送字符串
  29.         while(1)
  30.         {
  31.                 uart_printf("为了部落!");
  32.                 uart_printf("\n");
  33.                 Delay(0x00FFFFFF);
  34.         uart_printf("为了地狱咆哮!");
  35.         uart_printf("\n");
  36.                 Delay(0x00FFFFFF);
  37.         uart_printf("为了联盟!");
  38.                 uart_printf("\n");
  39.                 Delay(0x00FFFFFF);
  40.                 uart_printf("愿圣光庇护你!");
  41.                 uart_printf("\n");
  42.                 Delay(0x00FFFFFF);
  43.                 uart_printf("\n");
  44.         }

  45. }

  46. /****************************************************************************/
  47. /*                                                                          */
  48. /*              PSC 初始化                                                  */
  49. /*                                                                          */
  50. /****************************************************************************/
  51. void PSCInit(void)
  52. {
  53.     // 对相应外设模块的使能也可以在 BootLoader 中完成
  54.     // 使能 UART0 模块
  55.     PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
  56. }

  57. /****************************************************************************/
  58. /*                                                                          */
  59. /*              GPIO 管脚复用配置                                           */
  60. /*                                                                          */
  61. /****************************************************************************/
  62. void GPIOBankPinMuxSet(void)
  63. {
  64.         // 使能 UART0 禁用流控
  65.         UARTPinMuxSetup(0, FALSE);
  66. }

  67. /****************************************************************************/
  68. /*                                                                          */
  69. /*              UART 初始化                                                 */
  70. /*                                                                          */
  71. /****************************************************************************/
  72. void UARTInit(void)
  73. {
  74.         // 配置 UART0 参数
  75.         // 波特率 115200 数据位 8 停止位 1 无校验位
  76.     UARTConfigSetExpClk(SOC_UART_0_REGS, UART_0_FREQ, BAUD_115200, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
  77.         // 使能 UART0
  78.         UARTEnable(SOC_UART_0_REGS);
  79. }

  80. /****************************************************************************/
  81. /*                                                                          */
  82. /*              串口输出                                                    */
  83. /*                                                                          */
  84. /****************************************************************************/
  85. void uart_printf(char *p)
  86. {
  87.         while((*p)!='\0')
  88.         {
  89.                 UARTCharPut(SOC_UART_0_REGS, *p);
  90.             p++;
  91.         }
  92. }

  93. /****************************************************************************/
  94. /*                                                                          */
  95. /*              延时                                                        */
  96. /*                                                                          */
  97. /****************************************************************************/
  98. void Delay(unsigned int n)
  99. {
  100.         unsigned int i;

  101.         for(i=n;i>0;i--);
  102. }

复制代码




最近在关注这个板子,我想申请一直申请不到,小编可以把资料发给我看看吗?邮箱710556623@qq.com

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top