页次: 1
用PY32做的第一个制作,期间收小麦干农活打断了这几天才捡起来,简单写了个测试程序,但是不知道怎么开两个通道的DMA,只开了ADC的DMA,产生1KHZ正弦波是直接用1K方波滤波得到的,两个量程显示数字0.000-2.000欧,00.00-60.00毫欧。没写校准程序没画PCB,电路里面四个保护三极管和TVS都没焊接,别的和原理图一样,由于没制作第二个不知道哪里画没画错。
测试程序和JLCEDA原理图
github链接
https://github.com/yjmwxwx/py32/tree/master/led_nei_zu_yi
电路图
实物图
测60毫欧电阻
测 0.5毫欧电阻
测1毫欧电阻
测2欧电阻
@yjmwxwx
PY32F0 的ADC精度不是很高, 从实际测试看, 勉强到8bit.
和STM32F030对比下, 看看差多少
搞不懂为什么我设置采集一个通道就是不能出正确数值,但是采集两个通道就正常了,两个100欧电阻串联分压,一端接3.3一端接GND,中间接PA0和PA1。
程序
https://github.com/yjmwxwx/py32/tree/master/adc
用JLINK读出DMA储存在内存的数据看还可以,STM32基本也这样
@yjmwxwx
C语言不熟练也不懂英文看不懂官方程序只能看手册自己写了,时钟设置成功了,就是PLL只能2倍频啊
shizhong:
ldr r2, = 0x40022000 @FLASH访问控制
movs r1, # 0
str r1, [r2] @0:flash没等待,1:flash等待
ldr r0, = 0x40021000 @ rcc
ldr r1, = 0x20008
str r1, [r0, # 0x10] @外部晶振选择
ldr r1, [r0]
ldr r2, = 0x10000
orrs r1, r1, r2
str r1, [r0] @开外部振荡器
denghse:
ldr r1, [r0]
lsls r1, r1, # 14
bpl denghse @等外部振荡器
ldr r1, = 0x01
str r1, [r0, # 0x0c] @PLL配置
ldr r2, [r0]
ldr r1, = 0x1000000
orrs r1, r1, r2
str r1, [r0] @开PLL
dengpll:
ldr r1, [r0]
lsls r1, # 6
bpl dengpll @等PLL
movs r1, # 0x02
str r1, [r0, # 0x08] @选择系统时钟
@Gentlepig
汇编确实不需要main
编译器是ARM-NONE-EABI ,如果arm-none-eabi-ld报错的话就去掉-nostartfiles,我也不懂这个参数是干什么的,以前老版本不报错今天装了新版本的报错。
zhanding就是堆栈顶的意思,固件开头第一个32位就是堆栈顶,第二个32位就是程序入口
我前些日子用STM32F030F4P6做了一个电池内阻测试仪,看到PY32便宜就想移植下,要是能成功就能降低成本。
前些日子我搞的软硬件开源的简易电池内阻测试仪 https://oshwhub.com/yjmwxwx/jian-yi-dian-chi-nei-zu-ce-shi-y
我也买了点,真是便宜啊,点个灯试试
程序
.thumb
.syntax unified
vectors:
.word zhanding
.word kaishi + 1
.equ zhanding, 0x20001000
kaishi:
__kai_pa_shi_zhong:
ldr r0, = 0x40021034
movs r1, # 1
str r1, [r0]
__pa_she_zhi:
ldr r0, = 0x50000000
ldr r1, = 0xebfffffD
str r1, [r0]
ting:
movs r1, # 1
__led_kai:
str r1, [r0, # 0x18]
ldr r2, = 0xfffff
__led_kai_yanshi:
subs r2, r2, # 1
bne __led_kai_yanshi
__led_guan:
str r1, [r0, # 0x28]
ldr r2, = 0xfffff
__led_guan_yanshi:
subs r2, r2, # 1
bne __led_guan_yanshi
b ting
页次: 1