目录
数据计算单元(Data Computing Unit)是一个不借助于CPU的简单处理数据的模块。每个DCU单元具有3个数据寄存器(DATA0、DATA1、DATA2),能够进行2个数据的加减和比较大小,以及窗口比较功能。本产品搭载4个DCU单元,每个单元均可独立完成自身功能。
DCU加法模式计算DATA0和DATA1的和,其中DATA0作为被加数,DATA1作为加数。每次写DATA1寄存器进行一次(DATA0+DATA1)/2的运算,DATA0+DATA1的结果存入DATA0,而(DATA0+DATA1)/2的结果存入DATA2。当DATA0+DATA1结果超过0xFF(8bit模式)或0xFFFF(16bit模式)或0xFFFF_FFFF(32bit模式)时产生标志位并产生中断。
DCU减法模式计算DATA0和DATA1的差,其中DATA0作为被减数,DATA1作为减数。每次写DATA1寄存器进行一次(DATA0-DATA1)/2的运算,DATA0-DATA1的结果存入DATA0,而(DATA0-DATA1)/2的结果存入DATA2。当DATA0-DATA1结果小于0x0(8bit,16bit,32bit模式)时产生标志位并产生中断。
DCU比较模式比较DATA0和DATA1以及DATA0和DATA2的大小,可选择当DATA0大于DATA1,DATA0小于DATA1,DATA0等于DATA1时以及当DATA0大于DATA2,DATA0小于DATA2,DATA0等于DATA2时产生标志位并产生中断。比较模式下可以选择数据开始比较的条件,写DATA0后比较或写任何数据寄存器后比较。
1.实验目标
本实验主要使用DCU的加法、减法、比较功能,通过串口助手查看数据,LED灯点亮表示DCU运算的预期结果。
2.实验准备
硬件搭建:ZW-HC32F460-BZ标准版开发板1套
软件搭建:MDK5.22
3.库函数说明
【DCU初始化函数】
函数原型:en_result_t DCU_Init(M4_DCU_TypeDef *DCUx, const stc_dcu_init_t *pstcInitCfg)
输 入:
DCUx:DCU单元号;
M4_DCU1:DCU单元1;
M4_DCU2:DCU单元2;
M4_DCU3:DCU单元3;
M4_DCU4:DCU单元4;
pstcInitCfg:DCU初始化参数结构体,参照stc_dcu_init_t定义;
输 出:操作成功返回OK;
功 能:初始化DCU相关参数;
举 例:DCU_Init(M4_DCU1, &stcDcuInit);
【DCU写数据Datax函数】
函数原型:en_result_t DCU_WriteDataHalfWord(M4_DCU_TypeDef *DCUx,
en_dcu_data_register_t enDataReg,
uint16_t u16Data)
输 入:
DCUx:DCU单元号;
M4_DCU1:DCU单元1;
M4_DCU2:DCU单元2;
M4_DCU3:DCU单元3;
M4_DCU4:DCU单元4;
enDataReg:DCU数据寄存器结构体,参照en_dcu_data_register_t定义;
u16Data:写入16位数据;
输 出:操作成功返回OK;
功 能:DCU写数据到DATA寄存器;
举 例:DCU_WriteDataHalfWord(M4_DCU1, DcuRegisterData0, 2000u);
DCU_WriteDataByte()和DCU_WriteDataWord()函数与DCU_WriteDataHalfWord()函数功能用法是一样的,只是写入DATA的参数一个8位另一个是32位数据,源代码请查看 "hc32f460_dcu.h"文件。
【DCU读数据Datax函数】
函数原型:uint16_t DCU_ReadDataHalfWord(M4_DCU_TypeDef *DCUx,
en_dcu_data_register