站内搜索
发作品签到
专业版

CW32电压电流表

工程标签

990
0
0
1

简介

基于CW32F030C8T6地文星开发板的体积小巧的电压电流表

简介:基于CW32F030C8T6地文星开发板的体积小巧的电压电流表
电压电流表训练营【立创开发板&CW32】

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-08-07 14:22:02更新时间:2024-08-23 09:44:27

描述

一、简介

1、外观

基于CW32F030C8T6地文星开发板的体积小巧的电压电流表,长2100mil(53.34mm),宽900mil(22.86mm),厚度约2cm(不算boot0排针)

2、功能

  • 无需独立给开发板供电即可亮屏(使用MP2456GJ-Z),也可单独给开发板供电
  • 以10次每秒的频率采样当前的电流电压值,并计算功率,由于功率总是不太准,就没有统计电能
  • 支持屏幕亮度调节,电压电流的标定,采样率没有太大必要改,固定了
  • 电压电流的标定共选取5个点,首(0)尾(65535/电流电压最大值)及中间的三个点,依次调节至目标值后确认,保存到FLASH中

3、按键

中键(-):非调节模式,长按切换主界面和设置界面,短按进入调节模式;调节模式,长按取消操作,短按确定或下一步

左键(↑)右键(↓):非调节模式,长按切换设置页面,短按主界面电压换挡;调节模式,长按短按均为调节,调节内容不同

二、硬件部分

1、双Type-C母座输入输出

  • 同时使用FFC连接线连接D+、D-、CC1、CC2六个引脚,使支持快充

2、SSP9451 DC-DC降压电路(推荐使用MP2456GJ-Z)

  • 4.2-40V输入,3.3V输出,给CW32开发板供电,原理图参考MP2451数据手册绘制
  • 反馈电压0.794V,由电阻分压可得输出电压为0.794/R1*(R1+R2),取R1=40.2k,R2=124k,得输出电压3.243V≈3.3V
  • D2防止独立供电时电压漏到VBUS(参考iDKMeter02C)

3、电压采样电路

  • 使用单刀三掷开关进行换挡,三档可调节,量程、12位分辨率如图,D5稳压二极管保护芯片引脚

4、电流采样电路

  • 使用4mΩ采样电阻,两端连接INA138高侧测量电流分流监视器
  • INA138共模电压最大36V,可检测单向电流大小(双向的型号太贵),反向接入不会造成损伤,增益通过R10+R11配置,公式如图,本电路增益50V/V
  • INA138 5号引脚V+ 可接 2.7 ~ 36 V,这里独立3V3供电

5、纹波测量电路(参考iDKMeter02C)

  • C8与R14构成高通滤波器,截止频率≈319Hz,R12与R13提供0.794V偏置电压

6、SPI TFT屏幕&SPI FLASH电路

7、按键电路

  • 使用100nF电容进行硬件消抖

8、开发板引脚分配

  • 先将上述电路在PCB上大致分配好位置,然后参考CW32数据手册(P26-27)分配合适的引脚
  • 硬件SPI:PB03、PB04、PB05(SPI1)
  • SPI片选及屏幕DC/RES:PA15、PB06、PA10、PA11
  • PWM输出(BLK屏幕背光):PA09(GTIM3)
  • ADC:PA00(IN0)、PA07(IN7)、PB01(IN9)
  • 按键:PB07、PB08、PB09

9、PCB绘制

  • 尽量小体积,板框与CW32板大小一致,容阻尽量使用0402封装,部分排母剪断
  • Type-C母座一正一反,FFC连接D+D-CC1CC2,降低拉线难度
  • 保证VBUS和GND的线宽足够(以前GND都铺铜的,这次没铺,画忘了,后来飞了跟铜线)

10、焊接&组装

  • 焊接还是有点难度的,先焊屏幕背面的Type-C,四个固定脚不要焊,再焊两个FFC连接座,然后点锡浆,元件贴片,加热台加热,由于屏幕面有彩色丝印,所以只能烤一次,且时间要短,背面焊完后焊正面Type-C,加固Type-C四个固定脚,然后焊按键及旁边电容,屏幕部分电路的nmos和限流电阻
  • CW32开发板正常焊接排针,调试接口排针可不焊,电压电流表板滑动开关侧排母需连塑料壳剪断,对侧排母只需剪断引脚
  • 最后焊接屏幕,铁框屏幕需要使用透明胶包住,防短路,背面使用胶粘到OCB上
  • 购买5cm长的FFC连接线,两头剪短,插入连接器扣紧,CW32开发板电源输入与电压电流表输入Type-C位于同一侧,排针排母对上即可
  • (地线太细,飞一根粗点的铜线)

三、软件部分

1、环境配置

采用CLion开发CW32,CLion界面美观,功能强大,先参考配置CLion用于STM32开发【优雅の嵌入式开发】-- 稚晖君配置出一个STM32的开发环境,CW32F030x8的模板工程放到附件,也可跟随以下步骤配置(步骤会跳步的,细节可百度,也可以对照模板工程的内容理解)

 

1、按上面贴的链接配置好环境后创建一个STM32工程,进入项目目录,备份.idea文件夹内内容,再在工程把中芯片改为STM32G030C8T6(规格功能类似的芯片),再进入项目目录,还原.idea文件夹,并且删除大部分文件,只保留 [.\.idea\] [.\Core\Startup\] [.\Drivers\CMSIS\Core\] 这三个文件夹中的文件和 [CMakeLists.txt]  [STM32xxx_FLASH.ld] 文件

 

2、然后去CW32官网,下载CW32F030固件库,把其中的 【Libraries】 文件夹里的内容复制到 [.\Drivers\CMSIS\CW32F030_standard_peripheral\] 文件夹中(文件夹名称随意) ,把 【Examples\Template\USER\】 里的内容复制到 [.\Core\] 文件夹 ,把【IdeSupport\MDK\WHXY.CW32F030_DFE.1.0.4.pack】和 【IdeSupport\EWARM\arm\config\debugger\CW\CW32F030.svd】文件复制到工程目录

 

3、找到 [.\Core\Startup\]中的.s文件,将其改名为startup_cw32f030.s然后打开,对照固件库中的【IdeSupport\MDK\startup_cw32f030.s】进行修改,对比两个文件,修改那些带_Handler的字符串,除了注释为Top of Stack的那一行,其他的按照固件库中的.s文件一一对应

 

4、找到 [.\STM32xxxx_FLASH.ld]文件,将其改名为CW32F030x8_FLASH.ld然后打开,参考数据手册(P28),修改RAM起始地址0x20000000,长度8K,FLASH起始地址0x00000000,长度64K

5、打开 [.\CMakeLists.txt] 文件,找到 include_directories(xxx) 把STM32库的地址改成CW32的,使前面步骤添加的.h文件都包含在内;下一行是 add_definitions(-DDEBUG xxxx),添加#号将该行注释掉;下一行 file(xxx) 同样修改路径,将前面步骤添加的.c文件都包含在内;下一行set(LINER_SCRIPT xxx)将后面的ld文件名称修改为前面步骤4的名称;下一行在add_link_options后添加一行 add_link_options(--specs=nosys.specs)

 

6、项目栏右键,重新加载Cmake项目,再点构建,无报错则编译部分成功,下面是下载及调试

 

7、有miniconda可新建一个python环境,下载pyocd,没有的话也不想折腾可直接下一个python3.7,进行安装

 

8、在Clion运行/调试配置中,添加 原生应用程序,可执行文件选择pyocd.exe,实参为(可适当修改) flash --target CW32F030C8 --pack=$ProjectFileDir$\WHXY.CW32F030_DFP.1.0.4.pack $ProjectFileDir$\cmake-build-debug\$ProjectName$.hex 

 

9、添加嵌入式GDB服务器,targer remote 为(可适当修改) localhost:65533,GDB服务器为pyocd.exe,GDB服务器实参为 gdbserver -p 65533 --pack=$ProjectFileDir$\WHXY.CW32F030_DFP.1.0.4.pack --target CW32F030C8 -f 10M

 

10、使用下载或调试功能(需连接下载器),无报错则成功,调试可在外设栏中选择前面步骤的 [CW32F030.svd] 文件(但是看不到寄存器的值,暂时不知道为啥)

2、程序

写程序时,需要参考 CW32F030数据手册,CW32F030用户手册,CW32F030固件库中的例程,各种器件的数据手册,以及问搜索引擎和AI

固件库用起来似乎不如对着手册操作寄存器¿写的时间不同我用的也不一样,代码比较乱

Memory region         Used Size  Region Size  %age Used
             RAM:        4440 B         8 KB     54.20%
           FLASH:       60792 B        64 KB     92.76%

1、RCC

  • 配置PLL为系统时钟,PLL输入参考时钟为HSE(8Mhz),8倍频到64Mhz ,PCLK、HCLK不分频
  • 参考用户手册P61,系统时钟切换时需要同步配置FLASH控制寄存器FLASH_CR2.WAIT读等待周期参数:系统时钟频率不大于
    24MHz 则应设置FLASH控制寄存器FLASH_CR2.WAIT为0;系统时钟频率大于24MHz 则应设置FLASH
    控制寄存器FLASH_CR2.WAIT为1;系统时钟频率大于48MHz 则应设置FLASH控制寄存器FLASH_CR2.
     WAIT 为2。

2、ADC

  • 参考用户手册(P435-P437),CW32F030的ADC精度为12位,ADC采样 5/6/8/10 个ADCCLK周期,本项目配置为10,逐次比较阶段19 个ADCCLK周期,一次完整转换需要10+19=29个 ADCCLK周期,ADCCLK最大频率在内部1.5V参考电压,3.3V VDDA电压下为4Mhz,设置为最大即PCLK 16分频
  • 参考用户手册(P438),CW32F030有多种ADC工作模式,其中单通道多次转换模式可以实现过采样到16位精度,虽然实际达不到,就当作均值滤波了
  • 参考用户手册(P441和P458),配置好后启动转换,多次转换成成功后ADC_ISR.EOA自动变为1,可在ADC中断读取累加值,清除累加值,切换通道后可开启下一次转换,为了达到16位,需要采样256次,并将结果除16,计算下来单通道完整转换频率最大可达4Mhz/29/256=538.8Hz,采电压电流则对半,对于本电压电流表来说,应该足够了,代码过长不贴了(工程里还有纹波的采样,但是频率太低了感觉也没太大作用,也不想改代码了就留着了)

3、TIMER

  • 总共用到了3个定时器,BTIM1用以外部触发ADC采样,周期100ms,BTIM2用以按键检测,周期10ms,GTIM3用以PWM输出,调节屏幕背光亮度

4、FLASH

  • 原本计划使用SPI FLASH,但是似乎能读不能写,不知道哪里出了问题,于是使用CW32的FLASH存储参数
  • 参考用户手册(P111-)及数据手册,使用Page127 (0x0000FE00-0x0000FFFF 512Byte)  来存储参数,支持8、16、32bit访问,为了方便直接获取参数结构体的起始地址,每次写32bit,读取参数更简单

5、SPI

  • SPI配置不多说了过于简单,由于SPI FLASH没用上,屏幕的CS引脚保持下拉,FLASH的CS引脚保持上拉
  • ST7735S屏幕驱动十分简单,基本就是把商家提供的驱动代码改改,可能需要关注一下的命令就是0x36,可以看到这个命令控制了屏幕的显示方向,刷新顺序以及色彩RGB还是BGR

  • 基本的显示先使用 Address_Set函数 发送0x2a和0x2b命令 确定显示的区域(,此区域对于不同厂家生产的屏幕可能会有偏移,可以通过加减调节),再发送0x2c储存器写,然后只需要将16位的颜色代码依次发送出去即可按照0x36命令规定的顺序色彩来显示

6、标定功能

  • 由4个数组,两个记录ADC转换的值,两个记录对应的电流电压,每个数组有5个元素,首尾是0和65535/电流电压最大值,获取到ADC转换值后进行换算,value小于第一个元素的都为0

7、按键和UI

  • 全都是各种if switch 一堆标志变量实现的,乱的不行,好歹是能用

四、问题

1、地线太细、且拉的也有点抽象

2、SSP9451启动电压有点高?不知道是不是设计问题,IN脚4.73V就不能输出3.3V了

3、INA138偏移电压 ±0.2-1mV,小于50mA(大概,没有东西去测量)测不出来

4、电阻设计完全按照1.5V内部参考电压设计的,ADCCLK频率上不去

5、电压测量分三档没太大必要,用不上,分档的话,应该存三组标定数据

6、SPI FLASH写入失败

7、纹波没空写了

8、标定功能,0起始点应多采样一点取最大值

五、项目属性

首次公开,原创,未获奖,未参加过答辩

开源协议:GPL3.0

六、更新

[v1.0]-20240822

  • 第一版

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
CW32电压电流表演示.mp4
1
2
CW32_Volt_Ammeter.zip
18
3
CW32F030x8_Template.zip
16
4
CW32F030_StandardPeripheralLib_V2.1.zip
14
5
CW32F030.pdf
11
6
CW32x030_UserManual.pdf
1
7
INA138.pdf
5
8
SSP9451_V1.3.pdf
4
9
ST7735S.pdf
6
10
W25Q128JV.pdf
4
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航