找回密码
 立即注册
查看: 141|回复: 3

STC32G144K246 的 DSP-数学协处理器 怎么使用?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-12-07 14:52:35
已绑定手机

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2025-12-7 14:52:35 | 显示全部楼层 |阅读模式
STC32G144K246 的 DSP-数学协处理器 有兴趣,
但没有看明白怎么使用,最简单的:


我想实现32位有符号的乘法,这个结果可能是64位的,
keil 中貌似没有long long ?

另外,我要32位有符号的加法,如果从结果判断是否溢出等等。

看手册貌似要汇编配合,但没有看明白和C的调用关系...
希望有老师能讲解下



回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:266
  • 最近打卡:2025-12-16 08:29:17

812

主题

1万

回帖

2万

积分

管理员

积分
21282
发表于 2025-12-7 21:42:20 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:266
  • 最近打卡:2025-12-16 08:29:17

812

主题

1万

回帖

2万

积分

管理员

积分
21282
发表于 2025-12-7 21:44:12 | 显示全部楼层
STC32G144K246 的 DSP32-数学协处理器
包含 原 STC32G12K128/AI8051U的 MDU32-数学协处理器

截图202512072145017230.jpg

截图202512072154166949.jpg

====================================================================


STC32的CPU-指令集原生有 32位加减指令集,16位乘除加减指令集
===参见 AI8051U 用户手册

截图202512072153105335.jpg

截图202512072157449251.jpg

截图202512072158374232.jpg




回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2025-12-13 14:46:56
已绑定手机
已实名认证

123

主题

3277

回帖

8312

积分

版主

积分
8312
发表于 2025-12-8 13:15:56 | 显示全部楼层
本程序使用C程序中调用ASM函数实现DSP运算

已在STC32G144K246核心板V1.1上测试通过,测试内容包括固定值计算:
32x32=64:
截图202512081302582111.jpg
截图202512081303093224.jpg

变化值计算:
截图202512081303269699.jpg
截图202512081303399341.jpg
均验证成功


因为Keil C251本身不支持long long类型定义,这里使用了一个数组来表示,实际运算中,这部分使用汇编传递,并不影响
截图202512081305031467.jpg
程序使用了EDATA内的绝对地址定义,函数内并无传参(推荐使用这种方法,因为传参有参数量限制,绝对地址定义可以直接用)
截图202512081305581947.jpg

使用说明:
ASM文件中,已经给出对应关系,直接照着写就行了://EAX->DR4,EBX->DR0,ECX->DR20,EDX->DR16(默认状态下)
小科普:DR0代表的是32位的值,可以拆分成WR0和WR2这两个16位的值,也可以拆分成R0,R1,R2,R3这样四个8位的值,
改变R0,WR0和DR0内的最高8位也会跟随改变
MOV DR0, EDATA 100H 这句就是将我们的变量直接装载进这个寄存器,32位一次性操作就行了
MOV DPUOP,#09BH 这个是对应的触发指令,这里可以参考数据手册的这个部分:
截图202512081309256044.jpg
对应的指令填上就行了
最后是MOV EDATA 108H, DR16 这句的意思是将结果值再复制到结果变量里面
如果需要多个函数,只需要类似这样,复制粘贴增加一个不同名字的函数即可(我这里的ASM_ADD实际还是乘法部分的内容,用户自己更改成对应的即可)
截图202512081312154980.jpg
然后新增加的函数,到main.c的开头添加一个extern定义,就可以在程序中调用了
截图202512081313117929.jpg

以下是编译通过的程序,程序运行在120Mhz,内部使用CHIPID和PLL调整到120Mhz,与下载时指定的IRC无关
串口使用115200bps即可看到数据回传

STC32G144K246 汇编调用DSP32.zip (86.19 KB, 下载次数: 3)

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-17 03:00 , Processed in 0.104468 second(s), 63 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表