总结一下2021年全国大学生电子设计大赛A题用到的MSP432P401开发板

作者:嵌入式历练者

ID : Eterlove

记下相关笔记,记录我的学习生活!站在巨人的肩上Standing on Shoulders of Giants!

该文章为原创,转载请注明出处和作者:https://blog.csdn.net/Eterlove/article/details/121329683

        电赛中MSP432P401R板子用到了A题上面,A题的基本思路:采用的是MSP432P401R做主控芯片,采集数据的也是这块板子的AD采集,经过FFT处理后显示在液晶屏上和通过蓝牙发送数据手机端,显示波形和THDx值和归一化幅值。

        首先,没有什么资料比看官方手册显得很准确,熟练阅读芯片手册是一个优秀工程师所应具备的能力!

        1.阅读《MSP432产品培训手册》知道ADC14具有14位AD采集和1Msps采样速率。

         2.在Ti官网中下载的包simplelink_msp432p4_sdk_3_40_01_02z,包含了许多有用的例程,其中ADC14例程有7个,有时间都值得研究一下。

        其中第6个ADC14例程是用定时器触发ADC14进行采样的例程,我们A题的第一部分修改这个例程快速完成任务的,AD采集引脚是P5.5.

        3.学会一块芯片,官方给的原理图是少不了的,有了原理图才对板子的资源分布有了详细的理解。而A题的MSP-EXP432P401R的原理图在《MSP432P401R LaunchPad_ 开发套件用户指南》末尾找到!P36-P41页

        此外补充《MSP432P401R LaunchPad出厂例程操作》,讲述了基本的上电过程和Ti网上实例资源的寻找方法

         4.如何去查看TI芯片库的源码,因为TI将库函数封装在了芯片的ROM中,在Keil5无法用Go to  definition  /  CCS中无法用Ctrl+鼠标点击来打开其函数定义,解决方法:进入sdk文件夹下,按照simplelink_msp432p4_sdk_3_40_01_02\source\ti\devices\msp432p4xx\rom目录打开msp432p401_driverlib_rom_image.c 文件。

        5.TI芯片上的UART的波特率方面配置参见《MSP432P4xx 技术参考手册》,如果要深入学习这块板子,这个手册是最全面和最权威的手册!

         或者Ti官方给出了一个专门计算波特率参数的网址,十分的方便!网址:计算波特率参数

        另外提一下EUSCI缩写:Enhanced Universal Serial Communication Interface。TI的库函数本质上与ST公司的STM32库函数都是一样的,只是写代码的风格和命名不同!

        6.提一下通用的GPIO吧,这是TI的GPIO操作输出高低电平写法,感受一下与STM32不同的风格:

        7.给你们说一说MSP432P401串口UART和定时器A的资源分布引脚,这下面两张总结的图是来自blibli上某位博主总结(感谢!这图片电赛帮了我不少的忙!)

 

 在Ti中把串口封装成串口模块Module来使用,例如

UART_initModule(EUSCI_AX_BASE,&uartConfig);  //1.初始化串口

UART_enableModule(EUSCI_AX_BASE);   //2.使能串口模块

UART_enableInterrupt(EUSCI_AX_BASE, EUSCI_X_INTERRUPT);  //开启串口相关中断

假设 EUSCI_AX_BASE中的X为0,即EUSCI_A0_BASE(串口A0模块),由上表可知A0模块的RXD为P1.2, TXD为P1.3。这一点与SIM32的库函数有一点区别。 

        8.消除中断标志位(Ti的库函数)

         9.再提一下GPIO的复用的区别

 /*1. Selecting P1.2 and P1.3 in UART mode */
	
    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
            GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);


/*2. Configuring GPIOs for Analog In */
    MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
            GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3 | GPIO_PIN2 | GPIO_PIN1
                    | GPIO_PIN0, GPIO_TERTIARY_MODULE_FUNCTION);

注意GPIO_PRIMARY_MODULE_FUNCTION和GPIO_TERTIARY_MODULE_FUNCTION的区别,GPIO_PRIMARY_MODULE_FUNCTION用于GPIO复用,上面把p1.2 and p1.3复用为UART mode。

#define GPIO_PRIMARY_MODULE_FUNCTION                                     (0x01)
#define GPIO_SECONDARY_MODULE_FUNCTION                                   (0x02)
#define GPIO_TERTIARY_MODULE_FUNCTION                                     (0x03)

先写到这,欢迎补充。

おすすめ

転載: blog.csdn.net/Eterlove/article/details/121329683