点灯测试)
前言最近搞了一块AGM遨格芯微AG32VF407的板子趁放假前拿来测试下。AG32VF407这颗料是MCUCPLD架构的同类型的比较常见的还有安路和高云的一些芯片。这种芯片相比独立的MCU加CPLD的方案来说集成度高一些并且MCU和CPLD间交互可以走内部总线或者直接内存 交互使用起来相比通过外部总线通信来说会方便一些。基础说明这颗芯片大部分资料可以从官网下载到https://www.agmcn.com/不过官网上的资料不全、有些内容也比较旧最好还是找商家直接要。他家的资料还有一个问题是比较乱最好花时间都看一遍。这颗SOC芯片架构如下相比安路的EF2M45和高云的GW1NSR-4C这类体验上更多的是FPGA搭载了MCU形式的芯片AGM的这类芯片使用上来说更加像是MCU搭载了CPLD。不管是外设的丰富度还是RAM、ROM大小来说AGM的这颗料算是一个目前主流的单片机了。这颗料官方的开发板直接在淘宝上有卖比较便宜开发板加上下载调试器一套也就几十到一百多的样子这个板子下载调试可以用J-Link或者DAP-Link官方的下载器就是DAP-Link的用起来比较方便。MCU开发基于 VS Code 和 PlatformIO 听说安装SDK时可能会破坏原本用户目录下.platformio目录中的内容最好先进行备份。CPLD开发基于Quartus然后使用AGM自家的Supra软件来编译生成逻辑部分固件。SDK的安装很简单安装VS Code在VS Code中安装PlatformIO这个可能需要科学上网然后安装SDK这里用的AgRV_pio-1.9.2-win64-release。安装完成用户目录下的AgRV_pio就是SDK包了里面包含了代码、例程和工具Supra和Downloader等。这颗料在用的时候可以当作单独的MCU用可以当CPLD用也可以MCUCPLD用。主要用到了MCU那么项目整体都是基于VS Code来构建和管理的。MCU和CPLD部分分别会编译出.bin文件MCU固件烧录时烧录到Flash的头部CPLD固件烧录时烧录到Flash的尾部。两部分固件也可以整合成一个然后可以通过Downloader工具进行烧录。项目搭建MCUCPLD如果是使用体验的话跟着官方的文档来就行直接可以跑SDK包中的例程我这里以例程为基础来创建自己的项目。MCU部分新建项目目录然后将AgRV_pio\platforms\AgRV\boards目录拷贝到项目目录下只需要其中407部分然后将AgRV_pio\platforms\AgRV\examples\example目录下所有内容拷贝到项目目录下现在大致的目录结构如下有部分是项目运行后生成的接下来修改platformio.ini文件中两个配置就可以编译烧录进行测试了先烧录CPLD的再烧录MCU的如果提示Flash被锁就解锁下。这个程序烧录后可以看到板子上D1、D2、D3的LED闪烁。单片机程序可以直接调试CPLD部分接下来开始测试CPLD部分这里用了到开发板上的LED4首先注释掉MCU代码中对于LED4的初始化代码接下来注释.ve文件中MCU对于LED4的使用设置CPLD对LED4的使用配置启用CPLD重新生成项目重新生成后可以看到生成的logic目录这里就是CPLD的项目了CPLD开发需要在Quartus中进行AGM文档中说必须使用Full版本的不能使用Quartus Lite版本。我这里使用Intel® Quartus® Prime Lite Edition Design Software Version 22.1.2 for Windows版本进行了测试发现可以转换编译但是固件烧录到板子之后MCU部分程序会在卡在等待PLL启动成功的地方。使用了AGM官方提供的QuartusSetup-13.0.1.232就不会有这个问题。使用Quartus打开项目后首先需要转换然后可以正常添加代码进行开发开发完成后进行编译添加了两段代码分别如下led led_output(.clk(sys_clock), .LED_CTL4(LED_D4));module led(input clk, output LED_CTL4);reg LED_4;assign LED_CTL4LED_4;reg[31:0]clkcount;always (posedge clk)begin clkcountclkcount1;case(clkcount[27:27])0: LED_40;1: LED_41;endcase end endmodule接下来使用SDK包中的Supra工具编译出逻辑部分 .bin 文件接下来就只需要在PlatformIO中重新烧录CPLD固件重新编译MCU固件、重新烧录。完成后开发板上就可以看到LED4闪烁了。后记这颗料总体来说使用上比安路的 EF2M45 要简单许多比较适合以单片机开发为主的工程师使用兼具了单片机的简单性和CPLD的灵活性。这个灵活性从单片机的角度来说是真的很灵活了所有GPIO都可以按需求映射这个对于画板子来说是很舒服了。不过这颗料有个比较大的问题就是CPLD开发依赖Quartus这个在商用的场合上就会让人顾虑了会不会有合规性问题等。如果一直是这种情况的话这个系列很难做大。