type
status
date
slug
summary
tags
category
icon
password
前言CCS的使用打开需要使用管理员身份打开,要不然闪退(因为电脑账户为中文名)当代码文字太小时,通过以下快捷键:当代码文字太大时,通过以下快捷键:TI MSPM0G使用记录BUG、报错记录1、编译报错 no such file or directory :'@device.opt'[Ln1,Col 1]2、配置完sysconfig , 提示使用未声明的定义3、报错 warning #10210-D: creating ".sysmem" section with default size of 0x400; use the -heap option to change the default size4、使用DMA的FIFIO注意使用keil1、sysconfig 关联bug2、ADC0的通道一,PA26。默认是接地,输入信号没有东西,和3.3v连接会短路,配置输出为高电平,测试发现还是接地3、报错一大堆使用SYSCONFIG1.GPIO界面关于ADC的细节关于DMA配置使用定时器触发ADC
前言
我们组三个人都大三了,这是最后一次打电赛了,可惜今年是北京市省赛。这次比赛,第三天所有功能就都实现了,最终封箱DAC烧了,换了一块DAC,导致我们的DAC补偿系数不对了,最后拿了二等奖。
虽然受限于硬件原因,拿了二等奖,但我认为方案还是不错的,整个比赛过程也很开心,没留下遗憾,电赛对一个人能力的锻炼真的不可替代。尤其是紧迫时间下的抗压能力,是非常宝贵的经历,有条件的同学们一定要试着尝试。
还有一个感触,Ti这次推出的M0系列板子,bug真的非常多啊😓
总之,方案是可以的😊,接下来是正篇。
CCS的使用
打开需要使用管理员身份打开,要不然闪退(因为电脑账户为中文名)
当代码文字太小时,通过以下快捷键:
Ctrl /Shift/ +可以实现代码字体变大;
当代码文字太大时,通过以下快捷键:
Ctrl/-可以实现文字代码变小;
TI MSPM0G使用记录
BUG、报错记录
1、编译报错 no such file or directory :'@device.opt'[Ln1,Col 1]

解决办法:切换工作空间,不要有中文(电脑用户名)
2、配置完sysconfig , 提示使用未声明的定义
原因:有时候
编译器会自动给你加头文件 #include "cstdint”
报错:有时候直接说明这个头文件找不到
有时候报某些变量为声明
删掉就行


3、报错 warning #10210-D: creating ".sysmem" section with default size of 0x400; use the -heap option to change the default size
原因:使用标准库的sprintf会占用大量的堆栈,默认堆栈不够用
解决:在在CMD文件最前面,-heap加上0x400(相应的报错数据)
4、使用DMA的FIFIO注意
启用了FIFO寄存器,是一个32位的寄存器,将从这个寄存器读取ADC的转换结果。因为是32位的,所以会将两次的转换结果存放在一起。所以,如果转换了1000次,实际上只要读500次,因为每次能读取两个结果。

注意这段话:ADC通道的数据在MEM0-MEM11当中存储,因为FIFO是2个合成一个,所以设置MEM的时候要刚刚好让DMA搬运完,要不就出现高低位错位

使用keil
keil可以兼容市面上很多处理器,所以很多报错大家都能在网上找到,普通的我也没有记录
CCS Theia 很多关于环境的报错在网上找不到,如果熟悉keil的可以直接使用keil
1、sysconfig 关联bug
官网下载最新版本的MSPM0SDK包 和sysconfig软件

SDK包里面内置的sysconfig关联工具 是 1.19.0版本

官网最新版本的sysconfig的版本是1.20.0版本
所有手动修改工具源码 把上面红框里面的19替换为20 便可以正常关联并启动
或者使用老版本SDK开发包

2、ADC0的通道一,PA26。默认是接地,输入信号没有东西,和3.3v连接会短路,配置输出为高电平,测试发现还是接地
查看原理图
PA26的引脚和J18跳线帽相连,是放大器和比较器的低,如果要使用ADC0的这个通道,记得把这个跳线帽给拔掉

3、报错一大堆
#include "ti/driverlib/dl_timera.h” 定时器A的
#include "ti/driverlib/dl_timer.h” 总的
不能同时引用,用哪个就调用哪个
使用SYSCONFIG
1.GPIO界面

PWM

关于ADC的细节
1、单通道单次转换


结束之后重新开启:先调用enc 再调用start
关于DMA配置


所以要选用单数的MEMR, sample count 和通道结合,让一次搬运完12个MEMR,不要让高低错位
single:有一个搬运一个 block:一次搬一个区块
repeat single:搬运完成,回到第一个重新开始搬运

transfer size: 总的点数除以2

使用定时器触发ADC
修改ADC memory 的trigger mode
