查看: 3630|回复: 1

[原创] NXP MAPS-KL43 FlexIO UART快速上手

[复制链接]

该用户从未签到

22

主题

47

帖子

0

中级会员

Rank: 3Rank: 3

积分
243
最后登录
2024-1-9
发表于 2016-5-12 14:28:34 | 显示全部楼层 |阅读模式
本帖最后由 hejunpeng 于 2016-5-12 14:35 编辑

NXP MAPS-KL43 FlexIO UART快速上手
                                                                     —— 基于Keil uVision5 和 Kinetis SDK 2.0
                                                                             
FlexIO模块广泛支持各种协议,包括 UART、I2C、SPI、I2S、PWM/波形生成等,这里对FlexIO UART 使用做出简单说明,UART串口收发一直是MCU基本通信方式,此帖使用MAPS-KL43和官方SDK 2.0对KL43的FlexIO UART进行收发操作,使用串口调试助手,调试助手发送数据,MCU收到数据后再把数据传回来,一个完整测试过程,下面直接贴上程序代码和演示视频,并提供相关注释,编译环境采用 Keil  uVision5。
   
MAPS-KL43开发套件:
   
3-1.jpg
  
原理图:
  
3-2.png
  
源码:

  1. #include "board.h"
  2. #include "clock_config.h"
  3. #include "fsl_common.h"
  4. #include "pin_mux.h"
  5. #include "fsl_port.h"
  6. #include "fsl_flexio_uart.h"


  7. /*******************************************************************************
  8. * Definitions
  9. ******************************************************************************/
  10. #define BOARD_FLEXIO_BASE    FLEXIO
  11. #define FLEXIO_UART_TX_PIN    6
  12. #define FLEXIO_UART_RX_PIN    7
  13. #define FLEXIO_CLOCK_FREQUENCY    48000000


  14. /*******************************************************************************
  15. * Variables
  16. ******************************************************************************/
  17. FLEXIO_UART_Type uartDev;


  18. /*******************************************************************************
  19. * Main
  20. ******************************************************************************/
  21. int main(void)
  22. {
  23.     uint8_t buffer;
  24.         
  25.     /* 定义 FlexIO串口结构体. */
  26.     flexio_uart_config_t uart_config;

  27.      /* 初始化系统时钟. */
  28.     BOARD_BootClockRUN();
  29.         
  30.     /* 使能 FlexIO GPIO时钟. */
  31.     CLOCK_EnableClock(kCLOCK_PortE);
  32.         
  33.     /* 初始化 FlexIO GPIO */
  34.     PORT_SetPinMux(PORTE, 22U, kPORT_MuxAlt6);
  35.     PORT_SetPinMux(PORTE, 23U, kPORT_MuxAlt6);
  36.         
  37.     /* 设置 FlexIO时钟源. */
  38.     CLOCK_SetFlexio0Clock(1U);

  39.     /* 获取 FlexIO UART初始配置. */
  40.     FLEXIO_UART_GetDefaultConfig(&uart_config);
  41.     uart_config.baudRate_Bps = 115200;
  42.     uart_config.enableUart = true;

  43.     /* FlexIO UART 配置 */
  44.     uartDev.flexioBase = BOARD_FLEXIO_BASE;
  45.     uartDev.TxPinIndex = FLEXIO_UART_TX_PIN;
  46.     uartDev.RxPinIndex = FLEXIO_UART_RX_PIN;
  47.     uartDev.shifterIndex[0] = 0U;
  48.     uartDev.shifterIndex[1] = 1U;
  49.     uartDev.timerIndex[0] = 0U;
  50.     uartDev.timerIndex[1] = 1U;

  51.     /* FlexIO UART初始化. */         
  52.     FLEXIO_UART_Init(&uartDev, &uart_config, FLEXIO_CLOCK_FREQUENCY);


  53.     while (1)
  54.     {
  55.         /* 接收串口数据存放在 buffer中. */
  56.         FLEXIO_UART_ReadBlocking(&uartDev, &buffer, 1);
  57.                
  58.         /* 将 buffer中的数据通过串口发送出去. */
  59.         FLEXIO_UART_WriteBlocking(&uartDev, &buffer, 1);
  60.     }
  61. }
复制代码

演示视频:  
  
FlexIO UART.gif
  
回复

使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2016-6-3 11:24:52 | 显示全部楼层
    楼主研究过FlexIOS模拟串口的中断接收功能吗
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 08:26 , Processed in 0.083246 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表