作者:嵌入式历练者
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的资源分布引脚,这下面两张总结的图是来自bilibili上m-RNA博主总结(感谢!电赛中这图片帮了我不少的忙!)
在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)
先写到这,欢迎补充。