CanMV-K230的DSP框架


简介

以下为针对CanMV-K230的DSP检测框架,主要采用Micropython开发,因此开发的部分功能受限
算法开发阶段CPU运行完整算法,实现时在中断中,视实际情况决定是否做出删减
通用结构:DSP框架一般可以表示为ADC采集——DSP处理——DAC输出
找一个图

框架简介

首先,针对上面的框架应该不要限制想象能力:
1)ADC可以是采集电压的ADC,也可以是采集声音、振动等;
2)DSP只是可以处理DSP功能的处理器,可以是专用的DSP、RISC-V的K230的处理器、STM32类的ARM等;
3)DAC这个部分作为DSP计算结果的输出,但K230没有DAC,因此教程以UART代替输出计算结果的功能

CanMV-K230的框架

CanMV-K230的框架采用以下结构:ADC——CPU/KPU——UART
采用CanMV-K230的ADC(12bit 1M),处理采用CPU与KPU,输出采用串口,中断开发
主程序用于输出结果

这个要绘图

程序的主要流程图

基础架构的完整程序

'''
实验名称: CanMV K230的 DSP程序开发基础框架
作者:HUAYUE
实验平台:CanMV K230(同类开发板应该通用)
说明:通过编程实现ADC采集,CPU或KPU处理,串口输出结果。
'''

# DSP的框架
# 导入必要的库
from machine import FPIOA
from machine import Pin
from machine import Timer
from machine import ADC
from machine import UART
import time

# 预定义的参数

# 定时器配置
tim.init(freq=1000, mode=Timer.PERIODIC,callback=fun) #周期为1000ms

# IO电平设置     # 实例化FPIOA
fpioa = FPIOA()   # 设置Pin2为GPIO2
fpioa.set_function(2, FPIOA.GPIO2)
# 实例化Pin2为输出
pin = Pin(2, Pin.OUT, pull=Pin.PULL_NONE, drive=7)

# ADC设置
adc = ADC(0) #通道0

# 串口设置
# UART2代码 串口波特率测试1MHz
fpioa.set_function(11,FPIOA.UART2_TXD)
fpioa.set_function(12,FPIOA.UART2_RXD)
#设置串口号2和波特率
uart=UART(UART.UART2,1000000)

# 中断函数设置
def fun(tim):
     pin.value(1)
     uart.write(':{0}\n'.format(adc.read_u16()))
     pin.value(0)

# 主函数

while True:
    time.sleep_us(1) #避免CPU满跑

框架的简单解释

Micropython是对算法的简单验证,一些功能的使用限制与Micropython对硬件底层的控制范围
默认为控制ADC的采样频率为1kHz,算法在中断中开发,当然受限于中断时间仅能实现一些简单算法



扫描二维码,在手机上阅读

K230开发流程

检测统一框架

评 论