项目计划:
1.构建该开发板所对应的开发环境,并验证程序的下载功能。
2.掌握GPIO口的使用,并实现数码管及TFT屏的显示驱动。
3.掌握ADC的使用,并以NTC为感温器件来进行温度的测控。
4.掌握UART的使用,并通过通讯来向数据记录模块发送数据以进行记录。
5.掌握RTC的使用,与显示功能相配合实现电子时钟功能。
AG32开发板是一款基于国产异构双核(RISC-V+FPGA)处理器的开发工具,故既可在其基础上开始进行MCU的项目开发,也可利用它所配备的FPGA来实现硬件功能构建,从而在一点程度上节省外设器件的购置及硬件线路的搭建。
整个开发工具包括两部分,即AGM MCU FPGA开发板和AGM专用下载器,见图1和图2所示。
图1 开发板
图2 下载器
该开发板的功能布局如图3所示,只是4个LED的标注位置应在左下角。
图3 下载器
在上电后,除电源指示灯被点亮外,4个绿色的LED也在不停地在闪烁,见图4所示。
图4 上电效果
VSCODE、python、sdk
1)安装VSCODE
先下载VSCODE安装程序,然后双击进行安装。
在图1界面选取接受协议,并点击“下一步”。
图1 接受协议
在图2界面自主设置安装位置,并点击“下一步”。
图2 设置安装位置
在图3所示来勾选设置,并点击“下一步”。
图3 设置安装位置
在图4界面点击“安装”,在完成安装后其界面如图5所示,点击“完成”即可。
图4 开始安装
图5 完成安装
完成安装后,软件的界面如图6所示。
图6 完成安装
2)安装python
先下载python安装程序,然后双击进行安装。
按图7所示勾选设置,并点击“Customize installation”进行安装。
图7 勾选设置
在图8界面点击“Next”,继续进行。
图8 继续进行
在图9界面点击“Install”,进行安装。
图9 进行安装
在图10界面点击“Disable path length limit”,然后后点击“Close”即可。
图10 结束安装
3)安装sdk
管理员身份运行VSCODE,然后点击,再输入“PlatformIO IDE”来查找platformIO 插件。
在图11界面点击“Install”,予以安装。
图11 安装插件
安装完毕后,会有红框给出的提示,此时重启 vscode即可。
图12 完成安装
在重启后,若出现红框内的图标,则表示安装成功。
图13 安装成功
4)程序编译
下载并解压AgRV_pio-1.6.1-win64-releas.exe,然后按图14所示设置工作路径,并点击“Install”安装。
图14 设置工作路径
在完成安装后,其文件夹结构如图15所示。
图15 文件夹结构
打开vscode,及example 样例工程,见图16所示。
图16 选取样例工程
在弹出的窗口中,按图17选取信任。
图17 选取信任
在打开工程后,其界面如图18所示。
图18 工程界面
在执行编译后,其界面如图19所示。
图19 编译后问题
经查看相关资料,可能与设置用户变量有关,问题在解决中。。。
先前曾受挫于无法正常完成编译,后经多次尝试和安装终于过了这道关,在完成编译后其结果如图19所示。
图19 完成编译
由于所用的开发板是407 芯片,因此需要对 platformio.ini 中的board 类型加以修改,
即由board = agrv2k_103 修改为board = agrv2k_407。
为了验证的简单化,可先把example_board.ve 中的其他配置暂时删除,只留下 sysclk 和 led 的配置:
SYSCLK 100
HSECLK 8
GPIO4_1 PIN_32 # LED1
GPIO4_2 PIN_31 # LED2
与常规的开发板下载有所不同,对于AG32开发板在通常情况下,其需要分别进行2次烧录,即烧录VE 文件和代码 bin。
(注:在首次使用的情况下,必须烧录VE 文件,否则报错。其它情况下,修改哪方面的内容,就只烧录哪方面的内容即可。)
烧录程序需要使用dap-link(AGM 专用),也就是将Dap-link 和开发板的连线起来,其工作模式为jtag 的swd 两线(clk 和tms)模式。
图20 dap-link连接
配置上,如果使用Dap-link(AGM 专用),需要在platformio.ini 中的配置以下两行:
debug_tool = cmsis-dap-openocd
upload_protocol = cmsis-dap-openocd
由于dap-link烧录器是免驱动的,因此无需安装任何驱动。
烧录VE:
图21 烧录VE
烧录程序:
图22 烧录程序
查看效果:
在example 例程的main 函数中,最后是调用函数TestGpio()。
进入TestGpio()函数,是对LED 灯的闪烁效果控制。
如果使用默认example 程序,按前边的操作一路走下来,此时是可以看到左下角的个LED 灯一起闪烁。
图23 控制效果
查看 log输出:
在以上的基础上,修改以下三项:
在latformio.ini 中,确认logger_if 配置是否打开的。
logger_if = UART0
build_flags = -DBAUD_RATE=115200
完成以上两项的设置,则log 通过uart0 输出,输出的波特率为115200。
图24 修改设置
在Example_board.ve 中,添加以下的串口IO 配置到ve 中去:
UART0_UARTRXD PIN_69
UART0_UARTTXD PIN_68
在example_gpio.c 中的TestGpio()函数中,于while(1)中里增加语句:printf(“Test log\\r\\n”);
图25 添加语句
最后,编译并烧录VE,烧录程序 bin。(注:ve 和程序两个都要烧录)
然后,用串口线将USB转TTL模块接到开发板的串口0,在电脑侧打开串口调试软件(波特率为115200),则可看到log 的输出信息,见图26所示。
图26 输出信息
指定通道电压检测:
AG32开发板具有A/D数据采集功能,且可多达16个通道。
在样例代码example_analog.c 中,adc 默认是宏关闭的。可在platformio.ini 中打开该宏,并使能默认的ip,即ip_name = analog_ip。
此外,在main()函数中需取消TestAnalog() 的注释,并将不用的测试函数注销。
对于TestAdc 函数,ADC 不需要在ve 里管脚映射,不需要设置IO 复用。
相应的main()函数内容为:
#include "example.h"
int main(void){
board_init();
while (1) {
TestAnalog();
UTIL_IdleUs(1000e3);
}
}
相应的TestAnalog() 函数内容为:
void TestAnalog(void)
{
TestAdc(ADC0);
TestAdc(ADC1);
TestAdc(ADC2);
}
其中TestAdc()函数内容为:
void TestAdc(ADC_TypeDef *adc)
{
printf("\\nTesting ADC%d:\\n", adc == ADC0 ? 0 : adc == ADC1 ? 1 : 2);
for (int channel = ADC_CHANNEL0; channel <= ADC_CHANNEL15; ++channel) {
ADC_SetChannel(adc, channel);
ADC_Start(adc, sclk_div);
ADC_WaitForEoc(adc);
printf(" channel %d: 0x%03x\\n", channel - ADC_CHANNEL0, ADC_GetData(adc));
}
}
在进行编译及VE烧录和BIN烧录后,将UART0经USB转TTL模块连接到电脑上,则通过串口调试软件可见到图1所示内容。
图1 运行结果
那各通道具体是与哪各引脚相连呢?
由运行结果可发现,其中的通道4、7、14、15均采集到的是最高值,经分析这几个通道是与LED1~LED4存在引脚共用的情况,故而出现这种现象。
为了进行引脚验证,按图2的对照表,可确定PIN_25所连接的是通道2。
图2 对照表
在对通道2输入3.3V电压信号后,由图3可知这样的判断是正确的。
图3 通道测试
为了免除ADC1和ADC2的显示,可在TestAnalog()中将其注销。
void TestAnalog(void)
{
TestAdc(ADC0);
// TestAdc(ADC1);
// TestAdc(ADC2);
}
此外,为了观察采样值与电压的对应关系,可在TestAdc()函数中添加如下语句:
u=ADC_GetData(adc)*3300/0XFFF;
printf(" channel %d: %d\\n", channel - ADC_CHANNEL0, u);
添加电压值显示后,其输出结果如图4所示。
图4 增添电压显示
这样就为后续的NTC温度检测和控制提供了可靠的基础。
NTC温度检测与记录:
在A/D数据采集的基础上,通过添加感温器件即可进行温度检测。
NTC是一种温度敏感器件,其阻值会随温度的升高而呈下降的热敏电阻。
AG32开发板在外接NTC热敏电阻模块的情况下,可进行温度的检测,其电路如图1所示。
图1 测温电路
NTC测温模块与开发板的连接如图2所示,在图3所示的程序配合下,即可得到相应的检测结果,见图4所示。
图2 电路连接
为了清除其它通道对视觉的干扰,可去除变换通道的循环处理,而指定单一通道的数值显示。
图3 测温程序
图4 检测结果
当手指接触NTC热敏电阻的外部铠甲时,可观察到温度在缓慢地上升,见图5所示。
图5 升温检测
温度检测与记录:
为进行检测温度的记录,可使用串口数据记录模块来实现。
该数据记录模块是一种串口设备,在使用时其工作的波特率为9600bps,在接收到开发板所发送的数据时,就将数据完整地记录到TF卡的文件中。为进行测试,可通过串口来查看其记录的数据内容,见图6所示。
图6发送数据
在接入数据记录模块后,其电路如图7所示。当记录数据时,其状态如图8所示,可见到写指示灯在不停地闪亮,即数据被不断地写入TF卡。
图7 电路连接
图8 数据记录状态
在结束数据记录后,通过读取TF卡可见到相应的记录文件,其文件名由urc+数字串构成,其记录文件的格式及内容如图9所示。
图9 记录格式及内容
这样就运行地解决了温度检测与记录功能,若进行温度控制,可在程序中添加一个限定值,当温度超过限定值时,就输出控制信号以停止加热过程,否则就启动加热过程。
更多回帖