找回密码
 立即注册
查看: 6820|回复: 25

硬件三角函数运算器, 硬件浮点运算器, 追风剑-STC32F12K64-56MHz,FOC方案征集

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-14 15:13:34
已绑定手机

54

主题

53

回帖

1680

积分

管理员

积分
1680
发表于 2023-6-8 18:16:44 | 显示全部楼层 |阅读模式
32位8051内置硬件三角函数运算器浮点运算器250MHz-PWM
STC32F12K54-56MHz-LQFP48,  8000片已到,【免费+包邮送
LQFP48/32, QFN48/32, TSSOP20, 封装,初期优选 LQFP48

STC32位8051,  STC32F12K54-56MHz 内含如下硬件运算器
1,硬件三角函数运算器,支持
    【正弦函数/sin,余弦函数/cos,正切函数/tan,反正切函数/arctan】;

      CPU-60MHz:      
      sin/cos,  270时钟/60,      <=   4.5uS
      sin/cos,  32个时钟/60,  大致  0.5uS
2,硬件单精度浮点运算器,提供了快速的单精度浮点运算。
      FPMU支持单精度浮点数的加、减、乘、除、开方和比较,
      支持整数类型和单精度浮点数之间的转换。

3万片途中,确保【全国大学生电子设计竞赛全国大学生智能车竞赛

淘宝全线上架,多家第三方淘宝店 RMB2.3 销售


STC32F12K54-56MHz追风剑核心功能实验板
MCU内置硬件三角函数运算器浮点运算器250MHz-PWM

STC32F12K54-56MHz系列 之 STC32位8051 内含如下硬件运算器
1,硬件三角函数运算器,支持
    【正弦函数/sin,余弦函数/cos,正切函数/tan,反正切函数/arctan】;
      CPU-60MHz:      
      sin/cos,  270时钟/60,      <=   4.5uS
      sin/cos,  32个时钟/60,  大致  0.5uS
2,硬件单精度浮点运算器,提供了快速的单精度浮点运算。

      FPMU支持单精度浮点数的加、减、乘、除、开方和比较,
     支持整数类型和单精度浮点数之间的转换。
STC32F12K54-56MHz 数据手册
http://www.stcmcudata.com/STC8F-DATASHEET/STC32F12K54.pdf

STC32F12K54-56MHz追风剑核心功能实验板演示程序
硬件三角函数运算器, 硬件浮点运算器, 追风剑-STC32F12K64-64MHz,FOC方案征集-1.png
更新记录
2023.06.21
1.  修改例程默认时钟频率;
2.  增加例程"32-自动追频跑马灯"。

2023.06.19
1.  增加例程"28-老梁示波器-虚拟显示-CDC模式"及使用说明书;
2.  增加例程"29-老刘爱捣鼓示波器,使用OLED屏显示或者虚拟OLED接口显示"及使用说明书;
3.  增加例程"30-STC32_U8G2_DMA_OLED";
4.  增加例程"31-科学计算器使用CDC虚拟液晶屏显示";
5.  增加例程"A0-核心板简单测试程序";
6.  增加文件"通过USB CDC协议进行STC-ISP调试接口显示使用说明";
7.  增加文件"通过USB HID协议进行STC-ISP调试接口显示使用说明";
8.  增加文件"追风剑-烧录-不停电下载使用说明"。

2023.06.12
1.  增加例程"22-硬件单精度浮点数运算";
2.  增加例程"23-DHT11温湿度数据读取-串口打印";
3.  增加例程"24-STC-ISP调试接口通过UART协议驱动虚拟设备";
4.  增加例程"25-STC-ISP调试接口通过USB CDC协议驱动虚拟设备";
5.  增加例程"26-STC-ISP调试接口通过USB HID协议驱动虚拟设备";
6.  增加例程"27-核心硬件功能初始化例程"。


I/O口对外的输出速度,30MHz 以下;
慢点, 对外辐射小;
用 DMA支持的 【串口/SPI/I2C/ADC/TFT,...】, 这样 CPU 去休息,不要焦虑的等





STC32F12K54-LQFP48-DIP48-DEMO-CODE-20230621.zip

38.22 MB, 下载次数: 456

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-9 21:15:25 | 显示全部楼层
征集 开源 FOC 电机控制方案@STC32F12K54-56MHz 为高校《单片机应用及原理》课程
===硬件材料费 www.STCAIMCU.com,  辛苦费 RMB5000 !
有强大的专门支持FOC运算硬件单精度浮点运算器,外部加上普通的运放就可以做FOC控制
32位8051世界共同进步,期待大家在此开源 STC32F12K54-56MHz-LQFP48的 FOC 方案

32位8051世界大礼,追风剑-STC32F12K54-56MHz,还是 STC的 那个 8051 回来了 !
少年强则国强,6/1 儿童节 新生代32位8051全面出击,全球 【免费+包邮】 送
硬件单精度浮点运算器/8051世界革命性的进步,64MHz 主频  ! 强大的DMA支持
===8K 高速 edata/堆栈/RTOS, 4k xdata/DMA缓冲区
; PWM 时钟源可选 250MHz
===奋起一剑斩不周,扳倒乾坤天且休!
自带硬件 USB 仿真】,【硬件 USB 高速下载】,同时支持【SWD仿真】,【串口仿真】

追风剑-STC32F12K54-56MHz-LQFP48转DIP48核心功能实验板

这个 STC32F12K54 的内部高达 [56MHz-HIRC] 的高速 HIRC,  不好做,
【5.5V ~ 2V 的压飘】,【-40度 ~ +85度的温漂】,对 56MHz的内部 HIRC是一大难题 !
暂时的解决方案就是用外部 32768 RTC 时钟来自动动态追频,动态调教内部高频时钟到 56MHz,
误差在 +/- 0.3%
用内部高速IRC取代外部高频时钟的好处是 【对外电磁辐射小抗干扰强

后记1,网友调侃:
平常吹水,自说水平高,现在【没能力开源个8051做的 FOC 方案,帮助大家共同进步 】!
只能说还是要虚心学习,共同进步

后记2,网友说:
目前有两个开源foc库可以参考,simpleFOC 与 Odrive,有兴趣可以移植一下

点评

到时候快进到STC也可以直接控制IPM,真正实现国芯崛起!(建议使用士兰微的IPM,国内布局最早阅历最大的IPM厂商)  发表于 2023-6-14 17:05
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-9 21:26:12 | 显示全部楼层
1.png
2.png

3.png
STC32F12K54-56MHz-LQFP48大学计划实验箱
1.png

2.png

3.png

4.png

5.png

6.png

7.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-9 21:35:00 | 显示全部楼层
32位8051是指:
KEIL C51支持的8051程序,在 KEIL C251编译器重新编译后,
烧录进 STC32,
STC32能运行原来8051的源程序经过KEIL C251编译器重新编译后的目标代码,
但速度不会降下来,一定是提升的

x86, x51的概念
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 10:33:38
已绑定手机

9

主题

70

回帖

2539

积分

荣誉版主

电子技术分享

积分
2539
发表于 2023-6-9 22:37:20 | 显示全部楼层
外观小巧便携,入手体验,爱不释手,官方出品,必属精品!


STC32F12K54.mp4

3.38 MB, 下载次数: 241

电子类短视频UP,微信:17199910203 抖音、快手、B站:电子电工单片机  欢迎各位朋友添加好友,交流学习,一起进步
B站视频-点击可看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-10 12:15:22 | 显示全部楼层
开心,这是 8051 世界 的一大步
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-11 09:29:57 | 显示全部楼层
STC32F12K54-56MHz-LQFP48追风剑实验箱讨论稿




管脚不够,外挂 74HC595/RMB0.15来解决,或I2C/SPI/UART 外挂 :
STC8H1K08-36I-TSSOP20,    RMB0.99 扩展I/O ;
STC8H8K64U-45I-TSSOP20,  RMB1.4 扩展I/O ;
STC8H8K64U-45I-LQFP32,     RMB1.9 扩展I/O ;
STC8H8K64U-45I-LQFP48,     RMB2.2 扩展I/O ;
STC8H8K64U-45I-LQFP64,     RMB2.5 扩展I/O ;
这样成本更低


实验箱9.63_2023-6-10-SCH.pdf

409.7 KB, 下载次数: 210

实验箱9.63_2023-6-10-PCB.pdf

966.5 KB, 下载次数: 261

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-6-12 15:46:00 | 显示全部楼层
STC32F12K54-56MHz, 追风剑, RMB2起
32位8051, 56MHz 主频,硬件单精度浮点, 硬件USB仿真
edata = 8k, xdata = 4k, DMA支持:【2组CAN, 4组串口, 3组SPI, I2C, I2S, 12位ADC, TFT
STC32F12K54-56MHz-LQFP48/32, TSSOP20, QFN48/32,硬件USB下载/仿真, SWD仿真
负压电磁组】,【完全模型组】,【单车越野组

全国智能车竞赛【负压电磁组】指定必须使用STC32参加比赛 ! www.STCAIMCU.com
全国智能车竞赛【完全模型组】【单车越野组】这两组也推荐使用STC32位8051参与比赛



全部【免费+包邮送】48-Pin 可以满足如下三组竞赛要求
全国智能车竞赛【负压电磁组】指定必须使用STC32参加比赛,48-Pin满足需求
全国智能车竞赛【完全模型组】【单车越野组】这两组也推荐使用STC32位8051参与比赛
STC32G12K128-35I-LQFP64/48/32, QFN64/48/32, TSSOP20, PDIP40
STC32G8K64-42I-LQFP48/32,以上都可以用于这3个组别的主控部分 !
清华卓晴老师说LQFP48够了,逐飞范总电话沟通说有硬件单精度浮点算力足够处理这3组的要求
===其实就是【单车越野组】有STC32F的单精度浮点支持为好
其他所有组别的电调部分都可以使用STC的参考方案,可以用STC的任何一款芯片来实现电调部分

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-01 06:58:22

5

主题

184

回帖

1331

积分

金牌会员

积分
1331
发表于 2023-6-13 04:36:41 | 显示全部楼层
神*** 发表于 2023-6-11 09:29
STC32F12K54-64MHz-LQFP48追风剑之实验箱讨论稿

Nice board, but on a board that large, I had hoped to see an I2S Audio Stereo DAC ?
STC32F has I2S support plus the FPU means you could generate quite useful real-time sine waves as a demo instrument ?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-6-13 19:59:01 | 显示全部楼层
250MHz时钟源 PWM, STC32F12K54-56MHz
——高速PWM应用1:  高速PWM输出
——高速PWM应用2:捕获外部高速脉宽(查询方式)
——高速PWM应用3:捕获外部高速脉宽(中断方式)


高速PWM应用1:   高速PWM输出
高速PWM可使用内建500MHz高速HPLL作为时钟源【输出高速PWM】/【捕获外部高速脉宽】
(注:500MHz的HPLL时钟2分频输出50%占空比的PLL输出时钟可作为高速PWM的时钟源)
  1. /*************  功能说明    **************
  2. 时钟说明:由内部IRC产生24MHz的时钟分频为6M提供给HPLL当作HPLL输入时钟,PLL锁频到246MHz输出作为高速PWM的时钟源,
  3. PWM高速输出说明:PWMA的CC1通道配置为输出模式,并从P1.0/P1.1口输出频率为2.46MHz,占空比为50%的互补对称带死区的PWM波形
  4. 下载时, 选择默认IRC时钟 24MHz。
  5. ******************************************/
  6. #include "stc32g.h"
  7. #define FOSC            24000000UL
  8. #define HSCK_MCLK       0
  9. #define HSCK_PLL        1
  10. #define HSCK_SEL        HSCK_PLL
  11. #define HSIOCK          0x40
  12. #define ENHPLL          0x80
  13. #define HPLLDIV_52      0x00
  14. #define HPLLDIV_54      0x01
  15. #define HPLLDIV_56      0x02
  16. #define HPLLDIV_58      0x03
  17. #define HPLLDIV_60      0x04
  18. #define HPLLDIV_62      0x05
  19. #define HPLLDIV_64      0x06
  20. #define HPLLDIV_66      0x07
  21. #define HPLLDIV_68      0x08
  22. #define HPLLDIV_70      0x09
  23. #define HPLLDIV_72      0x0A
  24. #define HPLLDIV_74      0x0B
  25. #define HPLLDIV_76      0x0C
  26. #define HPLLDIV_78      0x0D
  27. #define HPLLDIV_80      0x0E
  28. #define HPLLDIV_82      0x0F
  29. #define ENCKM           0x80
  30. #define PCKI_MSK        0x60
  31. #define PCKI_D1         0x00
  32. #define PCKI_D2         0x20
  33. #define PCKI_D4         0x40
  34. #define PCKI_D8         0x60
  35. void delay()
  36. {
  37.     int i;
  38.     for (i=0; i<100; i++);
  39. }
  40. char ReadPWMA(char addr)
  41. {
  42.     char dat;
  43.    
  44.     while (HSPWMA_ADR & 0x80);              //等待前一个异步读写完成
  45.     HSPWMA_ADR = addr | 0x80;               //设置间接访问地址,只需要设置原XFR地址的低7位
  46.                                             //HSPWMA_ADDR寄存器的最高位写1,表示读数据
  47.     while (HSPWMA_ADR & 0x80);              //等待当前异步读取完成
  48.     dat = HSPWMA_DAT;                       //读取异步数据
  49.    
  50.     return dat;
  51. }
  52. void WritePWMA(char addr, char dat)
  53. {
  54.     while (HSPWMA_ADR & 0x80);              //等待前一个异步读写完成
  55.     HSPWMA_DAT = dat;                       //准备需要写入的数据
  56.     HSPWMA_ADR = addr & 0x7f;               //设置间接访问地址,只需要设置原XFR地址的低7位
  57.                                             //HSPWMA_ADDR寄存器的最高位写0,表示写数据
  58. }
  59. int main()
  60. {
  61.     EAXFR = 1;
  62.    
  63.     P0M0 = 0; P0M1 = 0;
  64.     P1M0 = 0; P1M1 = 0;
  65.     P2M0 = 0; P2M1 = 0;
  66.     P3M0 = 0; P3M1 = 0;
  67.     P4M0 = 0; P4M1 = 0;
  68.     P5M0 = 0; P5M1 = 0;
  69.     //选择HPLL输入时钟分频,保证输入时钟为6M
  70.     USBCLK &= ~PCKI_MSK;
  71. #if (FOSC == 6000000UL)
  72.     USBCLK |= PCKI_D1;                      //PLL输入时钟1分频
  73. #elif (FOSC == 12000000UL)
  74.     USBCLK |= PCKI_D2;                      //PLL输入时钟2分频
  75. #elif (FOSC == 24000000UL)
  76.     USBCLK |= PCKI_D4;                      //PLL输入时钟4分频
  77. #elif (FOSC == 48000000UL)
  78.     USBCLK |= PCKI_D8;                      //PLL输入时钟8分频
  79. #else
  80.     USBCLK |= PCKI_D4;                      //默认PLL输入时钟4分频
  81. #endif
  82.     //设置HPLL的除频系数
  83. //    HPLLCR = HPLLDIV_52;                  //F_HPLL=6M*52/2=156M
  84. //    HPLLCR = HPLLDIV_54;                  //F_HPLL=6M*54/2=162M
  85. //    HPLLCR = HPLLDIV_56;                  //F_HPLL=6M*56/2=168M
  86. //    HPLLCR = HPLLDIV_58;                  //F_HPLL=6M*58/2=174M
  87. //    HPLLCR = HPLLDIV_60;                  //F_HPLL=6M*60/2=180M
  88. //    HPLLCR = HPLLDIV_62;                  //F_HPLL=6M*62/2=186M
  89. //    HPLLCR = HPLLDIV_64;                  //F_HPLL=6M*64/2=192M
  90. //    HPLLCR = HPLLDIV_66;                  //F_HPLL=6M*66/2=198M
  91. //    HPLLCR = HPLLDIV_68;                  //F_HPLL=6M*68/2=204M
  92. //    HPLLCR = HPLLDIV_70;                  //F_HPLL=6M*70/2=210M
  93. //    HPLLCR = HPLLDIV_72;                  //F_HPLL=6M*72/2=216M
  94. //    HPLLCR = HPLLDIV_74;                  //F_HPLL=6M*74/2=222M
  95. //    HPLLCR = HPLLDIV_76;                  //F_HPLL=6M*76/2=228M
  96. //    HPLLCR = HPLLDIV_78;                  //F_HPLL=6M*78/2=234M
  97. //    HPLLCR = HPLLDIV_80;                  //F_HPLL=6M*80/2=240M
  98.     HPLLCR = HPLLDIV_82;                    //F_HPLL=6M*82/2=246M
  99.     //启动HPLL
  100.     HPLLCR |= ENHPLL;                       //使能HPLL
  101.     delay();                                //等待HPLL时钟稳定
  102.     //选择HSPWM/HSSPI时钟
  103. #if (HSCK_SEL == HSCK_MCLK)
  104.     CLKSEL &= ~HSIOCK;                      //HSPWM/HSSPI选择主时钟为时钟源
  105. #elif (HSCK_SEL == HSCK_PLL)
  106.     CLKSEL |= HSIOCK;                       //HSPWM/HSSPI选择PLL输出时钟为时钟源
  107. #else
  108.     CLKSEL &= ~HSIOCK;                      //默认HSPWM/HSSPI选择主时钟为时钟源
  109. #endif
  110.     HSCLKDIV = 0;                           //HSPWM/HSSPI时钟源不分频
  111.    
  112.     HSPWMA_CFG = 0x03;                      //使能PWMA相关寄存器异步访问功能
  113.    
  114.     PWMA_PS = 0x00;                         //PWMA_CC1/CC1N高速PWM输出到CC1/CC1N口
  115.                                             //注意:PWMA_PS属于I/O控制寄存器,不能使用异步方式进行读写
  116.     //通过异步方式设置PWMA的相关寄存器
  117.     WritePWMA((char)&PWMA_CCER1, 0x00);
  118.     WritePWMA((char)&PWMA_CCMR1, 0x00);     //CC1为输出模式
  119.     WritePWMA((char)&PWMA_CCMR1, 0x60);     //OC1REF输出PWM1(CNT<CCR时输出有效电平1)
  120.     WritePWMA((char)&PWMA_CCER1, 0x05);     //使能CC1/CC1N上的输出功能
  121.     WritePWMA((char)&PWMA_ENO, 0x03);       //使能PWM信号输出到端口P1.0/P1.1
  122.     WritePWMA((char)&PWMA_BKR, 0x80);       //使能主输出
  123.     WritePWMA((char)&PWMA_CCR1H, 0);        //设置PWM占空比为50个PWM时钟
  124.     WritePWMA((char)&PWMA_CCR1L, 50);
  125.     WritePWMA((char)&PWMA_ARRH, 0);         //设置输出PWM的周期为100个PWM时钟
  126.     WritePWMA((char)&PWMA_ARRL, 99);
  127.     WritePWMA((char)&PWMA_DTR, 10);         //设置互补对称输出PWM的死区
  128.     WritePWMA((char)&PWMA_CR1, 0x01);       //开始PWM计数
  129. //  P2 = ReadPWMA((char)&PWMA_ARRH);        //异步方式读取寄存器
  130. //  P0 = ReadPWMA((char)&PWMA_ARRL);
  131.     while (1);
  132. }
复制代码





PWM使用HPLL时钟(输出高速PWM).zip

19.95 KB, 下载次数: 211

回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:20 , Processed in 0.141727 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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