找回密码
 立即注册
查看: 144|回复: 6

擎天柱学习纪实:《32位8051单片机Ai8051U深度入门》

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 2025-9-20 00:33:39 | 显示全部楼层 |阅读模式

一、前言

首先非常感谢STC官方活动赠送的核心版

前段时间在www.stcai.com找资料时,无意中看到了官方赠送AI8051U转89C52核心板活动。抱着试一试的心态申请
了下,没想到真的通过了,非常的开心。
Ai8051U转89C52核心功能实验板收到也有几天了,因为比较忙,一直还没有使用。今天展示下收到的Ai8051U核心板,
也简单的聊聊我和STC故事。
本人是电子类产品从业者,也是一个电子爱好者。经常会和嵌入式方案公司打交道,非常羡慕他们做出的各种各样的功能。
也是因为对电子的爱好,萌生了学习的想法。在网上搜索相关资料,了解单片机、嵌入式,查找学习教程。在这个过程中
了解到了开发板,拥有了我自己的8051开发板。促成了我和STC的初次邂逅,也开启了我和STC的相遇到相知之路。废话
不多说,晒一晒我的Ai8051U核心板。

★AI8051U相较与传统8051有了更快的速度,更多的功能:

* 超高速32位8051内核,速度比传统8051约快70倍以上

* 支持在线仿真

* 无需USB转TTL,可通过内置硬件USB直接下载

* 1.9-5.5V宽工作电压

* 内部高精准时钟(42MHz以下可调)

* 内置专业级复位电路,省外部复位

* 内置4组串口

* 内置DMA

* 120MHz高速16位PWM(支持硬件移相)

* 15路高速 ADC

* 32位乘除运算(MDU32)

* 单精度浮点运算+三角/反三角函数(TFPU)

* 一路比较器

* 内置 I2C、ICE、I2S、QSPI、LCD驱动模块等

AI8051U核心板正面:

AI8051_Top_A.jpg

AI8051U核心板背面:

AI8051U_Bottom_A.jpg

★AI8051U核心板和89C52-DIP40封装的基本GPIO引脚定义做到了完全对应,部分特殊引脚做了变动:

1、原89C52对应的晶振XTAL1、XTAL2引脚位置改为接XTALO(P56)、XTALI(P57),由于AI8051U有内部高精准时钟, 一般情况下不需要外部晶振

2、原89C52对应的RxD(P3.0)、TxD(P3.1)引脚位置改为接RxD3_2(P50)、TxD3_2(P51)

3、AI8051U无需外部复位,原89C52对应的RST位置改为NC

4、AI8051U核心板在Type-C接口相对的另一头,将89C52-DIP40封装没有的其它GPIO预留了出来

才疏学浅,望君莫笑

再来张咱Ai8051U核心板上机图

image.png

完美契合,绝世佳配!!!!!

再次感谢STC官方的这次活动,让我们有机会接触到更先进的32位8051

祝愿STC 乘风破浪、辉煌永续

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-09-30 11:14:42

16

主题

131

回帖

1148

积分

版主

积分
1148
发表于 2025-9-20 10:55:08 | 显示全部楼层
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 2025-9-23 15:18:05 | 显示全部楼层

● 预学习_AiCube辅助开发,自动生成程序(printf_usb三个实验)

一、学习实验

实验一:printf_usb输出“Hello World!”
实验二:查询方式,printf_usb打印接收到的数据(查询到电脑命令后,输出查询到的对应字符串)
实验三:中断方式,中断接收服务函数收到命名后,printf_usb输出接收到的字符串

二、学习心得

  • 利用AiCube配置项目程序,可以免去一条一条命令的配置基础功能。如GPIO端口、定时器、中断、UART等的基础配置。
  • AiCube-ISP内设置USB不停电下载后。代码更改,只需要点击Keil的“编译”,AiCube-ISP自动下载最新代码到单片机。就算拔掉核心板,再重新插上,也不需再将P3.2接地再进行上电。接上核心板,即可进行升级。
  • 初步了解USB的查询方式接收数据的实现,且通过实验加深了印象。
  • 初步了解USB的中断方式接收数据的实现,且通过实验加深了印象。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 2025-9-24 23:25:47 | 显示全部楼层

01、序言

开篇看到的是一句充满青春气息、拼搏精神的句子:

“哪怕梦想让我们拼的遍体鳞伤,这一次我们也要勇往直前”

为什么出了STC32,还要出Ai8051U呢? Ai8051U到底强在哪里?

1、屏幕显示

  • 实验箱使用了一个8080的8位并口TFT彩屏,传输速度更快,适合高分辨率和实时图像处理场景
  • 可以实现各种界面的刷新,且能保持不错的帧率
  • 实现汉字显示、图片显示、界面的旋转,适合做图形菜单等
  • 实现触屏的手写输入

2、IIS录放音

  • 可以实现声音的录制、播放、音量调节等
  • 使用Ai8051U即可实现录放音的功能

3、PWM_DMA

  • 可以实现1000多颗的WS2812灯的显示,且不会有任何干扰

4、频谱分析仪(上位机)

  • 通过Ai8051U的IIS实现
  • 可以显示声音的频率及中心频点
  • 足够的运算速度,快速的FFT刷新。能实现快速的分析声音频率

5、手写计算器

  • 通过在屏幕上手写数字的加、减、乘、除,计算出运算结果

6、视频播放(Flash编程器)

  • 通过串口Flash编译器可以加载动态图片,实现动态视频的播放

7、管脚兼容89C52RC、12C5A60S2等单片机,可以做到Pin对Pin的平替

8、支持8位/32位 8051指令集,可与原有8位/32位芯片无缝衔接

Ai8051U 功能简介:

第01集_序言.mp4_20250924_225725927_看图王.jpg

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 2025-9-25 22:04:00 | 显示全部楼层

02、硬件及工具介绍

本集主要介绍了实验箱的功能模块和软件的安装:

  1. Ai8051U实验箱的主要功能模块,实验箱包含了学习Ai8051U的主要模块和一些STC的特色功能(如下图)

52845692440571.png

  1. Keil软件的下载、安装

  2. AiCube-ISP工具下载、ISP功能介绍和添加STC头文件到Keil

  3. STC的Keil中断拓展插件的下载、安装

  4. Ai8051U代码包、手册、原理图的下载

  5. 第一个Ai8051U实验箱程序,LED跑马灯讲解:

    * Ai8051U实验箱进入下载模式的操作方法

    * Ai8051U同时支持8位/32位CPU指令集,下载时需注意选对需要烧录的程序文件

    * 在哪里可以找到实验箱代码合适的时钟频率

    * LED跑马灯效果展示

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 3 天前 | 显示全部楼层

03、点亮第一颗LED

  1. 新建工程项目及初步对工程项目进行设置

    * 最新版数据手册和视频有所不同,新建工程项目在2.7章节

    * Ai8051U作为32位8051,“Target”选项与8位89C52RC有所不同

    494594057056959.png

    上网查了下资料,了解到“Cpu Mode”选项的“binary (8051 compatible)”为8051兼容模式。生成的指令以传统8051指令集为基础,同时通过转义前缀(0A5H)扩展C251新增的指令,生成兼容传统8051的二进制代码。但由于转义前缀的存在,生成的代码并非完全兼容纯8051芯片(纯8051会将转义前缀0A5H识别为无效指令),仅兼容支持C251扩展指令集的芯片。且由于转义前缀的存在,相同功能的代码体积通常比原生模式(每条扩展指令前多1字节前缀),执行效就低且会增加指令解码时间,通过牺牲部分性能换取的兼容性。Ai8051U不支持此模式。

    Memory Model选“Xsmall”:Ai8051U的程序逻辑地址为:FF:0000H~FF:FFFFH,需要使用24位地址线才能正确访问。默认的常量类型(程序存储器类型)必须使用“far”类型,默认指针变量必须为 4 字节。XSmall默认将未指定存储类型的变量定义在内部RAM(edata区)。单时钟存取,访问速度快

    296363945230468.png

    * L251 Misc选项“Misc controls”输入框大写输入“REMOVEUNUSED”(视频内没提到,但最新的数据手册即然提到,应该是有用意。)

    * Debug选项卡点选“Use”,下拉框选择“STC Monitor-251 Driver”(可以直接通讯仿真,妈妈再也不用担心我的学习了^v^)

  2. Ai8051U的GPIO工作模式介绍

    350022425865759.png

    Ai8051U的GPIO工作模式相对于传统8051功能更丰富,传统8051仅支持“开漏模式”和“准双向(弱上拉)”。Ai8051U增加了“推挽输出”和“高阻输入”,

    且Ai8051U每个GPIO都可通过对PxM1和PxM0两个寄存器实现:开漏/准双向/推挽输出/高阻输入 四种模式的配置(传统8051仅支持固定单一模式)

  3. Ai8051U核心板(擎天柱)点亮LED
    /*代码一:整个P2端口设置为准双向模式*/
        #include "Ai8051U.h"
    
        void main(void)
        {
    	    P2M1 = 0x00; P2M0 = 0x00;  //P2端口设置为准双向模式
    
    	    while(1)
    	    {
    		    P20 = 0;  //点亮P20对应的LED
    	    }
        }
    
        /*代码二:仅将P2.0管脚设置为准双向模式*/
        #include "Ai8051U.h"
    
        void main(void)
        {
    	    P2M1 = 0xFE; P2M0 = 0xFE;  //P2.0管脚设置为准双向模式
    
    	    while(1)
    	    {
    		    P20 = 0;  //点亮P20对应的LED
    	    }
        }
    
        /*代码三:P2端口P20、P21管脚对应LED灯点亮*/
        #include "Ai8051U.h"
    
        void main(void)
        {
    	    P2M1 = 0x00; P2M0 = 0x00;  //P2端口设置为准双向模式
    
    	    while(1)
    	    {
    		    P2 = 0xFC;  //P2端口P20、P21对应LED灯点亮
    	    }
        }
    
        /*代码四:P2端口对应的所有LED灯点亮*/
        #include "Ai8051U.h"
    
        void main(void)
        {
    	    P2M1 = 0xFE; P2M0 = 0xFE;  //P2.0管脚设置为准双向模式
    
    	    while(1)
    	    {
    		    P2 = 0x00;  //点亮P2端口对应的所有LED
    	    }
        }
    
  4. AiCube-ISP的I/O配置工具使用

    317374326269603.jpg

    AiCube-ISP不仅是一个烧录软件,同时还包含了很多的辅助工具,I/O配置工具就是其中之一。如感觉自己手动配置,计算太麻烦,可使用I/O配置工具
    进行I/O口的模式配置,选择好每个IO管脚需要的工具模式,即可自动生成对应的IO配置代码

  5. 实验学习视频展示:
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-10-03 01:37:32
已绑定手机

0

主题

5

回帖

84

积分

注册会员

积分
84
发表于 昨天 17:12 | 显示全部楼层

04、USB不停电下载

本集看似只是讲了USB不停电下载,其实涉及到了挺多硬件知识,看视频时一直边看边查手册,以下为个人学习心得。

1、USB不停电下载介绍及所需文件(USB库文件下载)
  • 开发过程中经常需要反复修改代码,重新编译生成HEX。反复的停电/上电进行下载模式就成了一件冗余且繁琐的事。有了USB不停电下

载这个功能,可以省去这些冗余且繁琐的事。修改代码后,只需重新编译生成HEX文件,AiCube-ISP就可以自动将最新的代码下载进单片机。

  • USB库文件下载方法:进入STC官网(www.stcai.com)首页->软件工具,找到“库函数-USB库文件”下载
2、USB库函数详解:USB-CDC库函数和USB-HID库函数区别
  • USB-CDC:即虚拟串口,基于USB通讯设备类协议。USB-CDC虚拟串口忽略传统串口的波特率和起始位、停止位等冗余信息,传输

速度的比特率为全速USB的通讯速度12Mpbs(即每秒12M位,约1.5M/S,有效传输速度一般可达800K/S)。丢弃传统串口简单的软件奇

偶校验机制,有USB硬件CRC校验,以及校验出错重传机制,保证数据100%正确。可自动缓存数据,未处理完上位机上一笔数据,如有

新数据下传,可自动将新数据缓存,以保证数据100%不丢失或被覆盖,适用于大数据量的快速传输项目。

  • USB-HID:基于 USB 人机交互接口协议。所有版本Windows系统中都可免装驱动程序,即插即用。但数据传输速度较低,理论数据

带宽仅64K/S,仅适用于小数据量的数据传输项目。

3、USB库函数详解:不同Lib库文件适用范围
  • STC USB-CDC库文件
库文件名 功能说明
stc_usb_cdc_8h_data.LIB Ai8051U-8系列/STC8H系列Small存储模式USB-CDC库函数
stc_usb_cdc_8h_data_bl51.LIB Ai8051U-8系列/STC8H系列Small存储模式,超64K代码USB-CDC库函数
stc_usb_cdc_8h_xdata.LIB Ai8051U-8系列/STC8H系列Large存储模式USB-CDC库函数
stc_usb_cdc_8h_xdata_bl51.LIB Ai8051U-8系列/STC8H系列Large存储模式,超64K代码USB-CDC库函数
stc_usb_cdc_32g.LIB Ai8051U-32系列/STC32G系列64K代码模式USB-CDC库函数
stc_usb_cdc_32g_huge.LIB Ai8051U-32系列/STC32G系列Huge代码模式USB-CDC库函数
  • STC USB-HID库文件
库文件名 功能说明
stc_usb_hid_8h_data.LIB Ai8051U-8系列/STC8H系列Small存储模式USB-HID库函数
stc_usb_hid_8h_data_bl51.LIB Ai8051U-8系列/STC8H系列Small存储模式,超64K代码USB-HID库函数
stc_usb_hid_8h_xdata.LIB Ai8051U-8系列/STC8H系列Large存储模式USB-HID库函数
stc_usb_hid_8h_xdata_bl51.LIB Ai8051U-8系列/STC8H系列Large存储模式,超64K代码USB-HID库函数
stc_usb_hid_32g.LIB Ai8051U-32系列/STC32G系列64K代码模式USB-HID库函数
stc_usb_hid_32g_huge.LIB Ai8051U-32系列/STC32G系列Huge代码模式USB-HID库函数
4、USB库函数详解:query(查询方式)和interrupt(中断方式)区别
  • query(查询方式):固定的执行间隔,只有一个循环执行完,到达执行语句才会响应。适应于非紧急、大数据量的非实时性传输(如传感器数据、

网页数据、文件下载)。

  • interrupt(中断方式):不管代码执行到哪一行,当产生了“中断请求”时会立即响应,主机收到后优先处理该数据。适应于紧急、小数据量、

低延迟的实时性传输(如设备错误码、状态切换通知)。

5、USB库函数详解:头文件
  • STC USB库文件包含两个头文件“ai_usb.h”和“stc32_stc8_usb.h”。官方手册注解“ai_usb.h”为“Ai8051U系列USB库函数头文件”,

“stc32_stc8_usb.h”为“STC8H/STC32G系列USB库函数头文件”。实际比较了下,代码是一致的。

6、移植USB不停电下载关键部分到工程
  • 添加头文件和lib库文件

129554789299612.png

(复制工程需要的头文件和lib库文件到工程项目文件夹内,并调用头文件和将lib文件添加到项目)

180483652520739.jpg

((冲哥视频的项目文件下是没有“ai8051u.h”,但为何编译时也不会报错?是因为之前使用AiCube添加过型号和头文件到Keil安装目录下。双引号调用的头

文件会先在工程目录下查找头文件是否存在,如果工程目录下没有对应的头文件,会继续到Keil的安装目录下查找。如未提前添加过STC的头文件到Keil

目录下,才会报错。)

  • USB函数初始化(lib+.h实现)
usb_init();  //USB-CDC接口配置(USB初始化)
  • 命令参数代码移植
   char *USER_DEVICEDESC = NULL;
   char *USER_PRODUCTDESC = NULL;
   char *USER_STCISPCMD = "@STCISP#";

(最新的USB库函数内已包含了用户程序中不需要再对USER_DEVICEDESC,USER_PRODUCTDESC,USER_STCISPCMD进行定义。因此使用新USB库
函数时,用户程序中无需再进行定义。如定义了,需要删除掉。)

  • P_SW2寄存器和IE2寄存器使能
P_SW2 |= 0x80;  //使能访问XFR
IE2 |= 0x80;  //使能USB中断
EA = 1;  //使能中断总开关

a. P_SW2功能脚切换控制寄存器的B7(EAXFR)为“扩展 RAM 区特殊功能寄存器(XFR)访问控制寄存器”,而USB的一些寄存器都在"EAXFR"的列表里(可查看
Ai8051U手册的第13.4章节(扩展特殊功能寄存器列表))。因此需要使能B7位(EAXFR),才可正常访问USB的这些寄存器。为何不直接赋值要使用“|= 0x80”(或=)
呢?如果直接赋值,会改变P_SW2寄存器的其它位状态,因此使用“|= 0x80”只会改变B7的状态(P_SW2支持位寻址,也可以写为 EAXFR = 1)

154256815360069.jpg

b. IE2中断使能寄存器的B7(EUSB)为"USB中断允许位",因此需要对IE2的B7位进行赋值使能。同样为了不影响IE2的其它位,使用“|= 0x80”对IE2的B7位(EUSB)进
行赋值(IE2也支持位寻址,同样可以写为 EUSB = 1)

501095345441146.jpg

c. EA为总中断允许控制位,也就是所有中断的总开关(可查看Ai8051U手册第15.2章节了解)。如果EA未使能,就算中断允许位使能了,也同样无法实现功能。

442124805024031.jpg

  • USB不停电下载代码添加
if (bUsbOutReady)
 {
     USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
   
     usb_OUT_done();
 }

(最新USB库函数,不需要等待USB配置完成,在printf_usb和USB_SendData函数中对配置状态和忙标志进行了检测。因些无需添加
"while (DeviceState = DEVSTATE_CONFIGURED);"这段代码。

7、完整工程代码(Ai8051U 擎天柱核心板_版本)
#include "Ai8051U.h"
#include "ai_usb.h"

void main(void)
{
  P_SW2 |= 0x80;  //使能访问XFR

  P2M1 = 0x00; P2M0 = 0x00;  //P2端口设置为准双向模式

  usb_init();  //USB-CDC接口配置(USB初始化)

  IE2 |= 0x80;  //使能USB中断
  EA = 1;  //使能中断总开关
  while(1)
  {
    if (bUsbOutReady)
    {
      USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

      usb_OUT_done();
    }
    P20 = 0;  //点亮P20对应的LED
    //P22 = 0;  //点亮P22对应的LED
  }
}
8、学习USB不停电下载_实验视频
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-3 06:59 , Processed in 0.135241 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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