发新帖本帖赏金 380.00元(功能说明)我要提问
返回列表
打印
[APM32F4]

极海国产芯|基于APM32F407的Compute Module

[复制链接]
1546|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
susutata|  楼主 | 2022-10-12 14:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 susutata 于 2022-10-14 12:40 编辑

#申请原创#
@21小跑堂

01 前言
不知不觉,缺芯已经持续很长一段时间了,芯片价格飞涨,各种M4、M7系列开发板的价格也是水涨船高。作为一个DIYer,不知大家手里还有多少存货,反正我囤的“小芯库”是见底了。一个应用方案或开发板上用一颗甚至好几颗MCU的奢侈年代已经一去不复返,但也因此萌生了使用国产优质芯片做“核心模块板”的想法。

刚好拿到前不久申请的几颗极海APM32F407ZGT6样品,就准备用来试试水。仿照Raspberry PI Compute Module做一个基于APM32F407的Compute Module板。

02 整体设计

MCS Compute Module 1(以下简称CM1)是一个使用ARM Cortex-M4 32位微控制器作为核心,拥有板载WIFI & BLE 5.0、Ethernet接口的计算模块。同时用B2B接口保留407大多数外设核心功能,以满足不同开发底板的需求。


## 核心配置
  • 极海 APM32F407ZGT6 168MHz 32-bit ARM Cortex-M4 CPU
  • 内部192KB + 外部2MB SRAM
  • 1MB Flash存储
  • 支持 IEEE 802.3的百兆以太网PHY
  • 支持 2.4 GHz Wi-Fi和Bluetooth 5.0(LE)
  • 支持USB 2.0
  • 支持SWD接口下载APM32F407程序
  • 支持USB-JTAG下载ESP32 C3程序

## B2B接口
B2B接口设计成统一的,保证后续设计的CM2、3、4等,能够在不同扩展板上兼容使用。

高速
低速
LCD 8080接口 x 1
GPIO x 10
DCMI-14bit接口 x 1
UART x 2
Ethernet接口 x 1
I2S x 1
OTG_HS接口 x 1
CAN x 2
OTG_FS接口 x 1
I2C x 1
SPI x 1
TIMER通道 x 10
TIMER互补通道组 x 1
SDIO-8bit接口 x 1
DAC通道 x 2
ADC通道 x 6

03 硬件设计
## 原理图
模块各部分原理连接图。


## PCB
绘制PCB图,用BGA封装的估计好布线些,建议官方出些不同封装的芯片,满足不同应用场景的需求。


04 点个灯
板子做好时,发现RT-Thread 4.1版本已经支持APM32F407系列开发,那话不多说,直接用RT-Thread Studio上操作系统点灯。
##
安装SDK
因为是自己设计的开发板,这里使用芯片支持包开发。

## 安装JLINK支持
JLINK v7.8以上版本已经支持APM32各系列,不想下载仿真时再多选几个选项的同学可以装个最新版。

## 创建项目
CM1用到的是APM32F407ZGT6,那么这里的芯片型号也是选APM32F407ZGT6,而RT-Thread选择4.1.0版本。

## 编写代码
### 应用程序
在main.c文件中加入LED闪烁和打印“Hello RT-Thread!”的代码。

### 配置晶振
要留意system_apm32f4xx.c默认使用外部晶振,且配置为8MHz的。因为CM1使用的是25MHz外部晶振,所以需要修改对应值。
### 下载和调试
编译下载后,启动RT-Thread Studio的串行终端,可以看到串口打印的字符串。


完成点灯。


05 上个云
设备要上云,肯定需要联网媒介,这里使用板载的ESP32 C3 WROOM模块,并写入ESP官方AT固件。
## 配置ESP32 C3
ESP官方AT固件可以从gitee获取:
https://gitee.com/EspressifSystems/esp-at

AT固件默认使用ESP32 C3 UART1进行AT指令通信。而CM1是采用APM32F407 USART3与ESP32 C3 WROOM UART0通信的方式。所以需要修改官方固件配置。

修改默认UART口为UART0。


配置不从UART0输出log信息,然后重新编译下载到ESP32 C3即可。


最后从ESP32 C3 WROOM预留的调试串口发个"AT"字符,有回应就表示OK了。具体支持的AT指令可以查看官方手册。

## AT Device件包
接下来就是使用APM32F407控制ESP32 C3 WROOM联网,这里就不重复造轮子了,直接在RT-Thread Studio上使用AT Device软件包(感谢RT-Thread团队)。

### 添加软件包
打开RT-Thread Settings,添加AT Device软件包。

### 配置软件包
配置at device软件包和UART设备驱动组件,并保存配置文件,WIFI和串口信息要根据自己设备的情况配置哦。

### 修改官方代码
官方代码还不很完善,自己添加用于透传的UART3配置。




### 编译下载
编译后重新下载,可以看到At device通信成功。


## OneNet平台创建MQTT产品和设备
用到的云平台还是熟悉的OneNet平台,OneNet平台的操作有很多文章介绍了,大家可以参考官方文档。
https://open.iot.10086.cn/doc/multiprotocol/book/get-start/product&device/product-create.html

这里要注意的是,使用旧版“多协议接入”创建MQTT产品。不要问为什么不使用新版,问就是催更RT-Thread团队。创建完成后记录设备ID、鉴权信息、设备API Key、产品ID和产品API Key等信息。

## OneNet软件包
该软件包只支持oneNet平台的旧版多协议接入(再次催更)。

### 添加软件包


### 配置软件包
配置onenet软件包并填入创建产品和设备时记录的相关信息。

## 编写OneNet应用API
配置完成后,会同时引用cJSON后WebClient软件包。这时可以用onenet_sample代码进行测试。但因为官方的Demo不完善,可以自己仿照重写一个。bsp_onenet文件msh命令定义如下。


### 初始化MQTT Server

### 发布数据


### 获取数据


### OneNet平台
可以看到onenet平台上Template值变为24,也可以上传、读取bin文件做OTA、读取图片做图传显示等操作。


06 加个小程序buff
还没时间搞,先占坑。

07 画个饼
接下来准备做个基于CM1的IOT扩展板、电机扩展板、触屏小终端、各种应用例程等等可以充分发挥APM32F407芯片性能的DIY,感兴趣的小伙伴可以插个眼,蹲个后续。




08 参考资料
## 文中所用到的完整代码
链接:https://pan.baidu.com/s/1taIenhytZj38-436tXWzIg?pwd=ljxm
提取码:ljxm











使用特权

评论回复

打赏榜单

Gfan 打赏了 300.00 元 2022-12-05
理由:恭喜获得极海国产芯悬赏贴活动的“国产芯文撰稿人”称号,感谢您的支持,期待下次的干货分享哦!

21小跑堂 打赏了 80.00 元 2022-10-18
理由:恭喜通过原创审核

评论
21小跑堂 2022-10-18 15:45 回复TA
软硬件齐全,流程详细完善,文章结构清晰,对其他使用者有一定帮助,感谢分享,期待后续更好的作品。 
沙发
WuKaiLi| | 2022-10-12 19:09 | 只看该作者
大神流啤,学习学习

使用特权

评论回复
板凳
kai迪皮| | 2022-10-18 11:36 | 只看该作者
点赞,感谢楼主分享

使用特权

评论回复
地板
Aligagago| | 2022-10-20 19:30 | 只看该作者

使用特权

评论回复
5
ivws点点滴滴| | 2023-2-1 12:31 | 只看该作者
优秀

使用特权

评论回复
6
wangqy_ic| | 2023-2-2 18:23 | 只看该作者
厉害厉害~

使用特权

评论回复
发新帖 本帖赏金 380.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

32

帖子

4

粉丝