找回密码
 立即注册
查看: 403|回复: 9

【2024-Ai8051U】新手上路-Ai8051U笔记堂堂连载!

[复制链接]
已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-6 22:20:05 | 显示全部楼层 |阅读模式

你好

这里是鲁迪乌斯电子限定版。

这是我第一次参加嘉立创的活动,本人来自广东,是一名在校大三电子小弟。

很荣幸能够接触到嘉立创同AI联名的活动。

在第一次看到Ai8051U板子的时候,我很好奇,对于其冠名有AI两字是名存实亡还是卓越的进步这一问题表示好奇。

但事实证明,在AI为硬件赋能的今天,嘉立创的这块板子在我心中确实值得其分量,是一块优秀且伟大的作品。qiang

缘起AI

在过去的两年快两年半的大学生活中,我更多的是代码手鲁迪乌斯。大二的时候开始接触了AI,从pytorch开始启蒙,陆续做了rnn天气预测,Linet和Unet图像分割,还有最经典的识别手写数字集,到最后自己搭建了自己的卷积网络实现了股票预测和房价预测,又浅浅尝试了Transfomer的注意力机制。然后又沉迷于各种有意思的算法,到现在leetcodeAC了差不多200道,从那以后,属于我的AI大门就已经打开了,或许我与AI注定会打个照面

忠于电子

我接触过许多开发板包括普通的51,stm32F103的各种形态,自己的第一块开发板也是在ESP32的基础上画出来的,在过往的大学生活中,我更多的是操作一些寄存器处理各种外设功能,这显然不能满足我,于是我就思考,是否能够在开发板上实现强大的Ai功能呢?想都不用想肯定可以,然后我就遇到了我们的Ai8051U

所以我便开始学习Ai8051U,准备一窥51系列单片机在Ai领域的卓越成长

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-6 22:23:24 | 显示全部楼层

之前在RTT的活动中也用过MarkDown产出过文章,我个人的风格是尽量精简,当然很有可能会出错,对于观者来说如果发现错误请谅解,因为我对这方面的了解仍有不足,

仅供参考

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-6 22:35:05 | 显示全部楼层

序章

8051对于STC32G的优势?

1.png1.PWM可以兼容DMA

2.新增硬件存储单元

3.强大的AI功能

4.丝滑的显示图形

5.实现录放音直接实现录放音模块的功能

一、屏幕显示功能

2.png

可见AI8051U可以实现对图像,汉字等的高刷新率高帧率显示,包括图像的旋转。

利用一个8080的八位并口,对图形菜单显示十分有利。

二、录放音功能

3.png

按下按键2可以开始录音,按键1停止,按下按键6可以查看和修改音量,然后按键3可以放录音。

三、PWM_DMA模式

演示时用到了一个点阵屏来实现数字显示。

4.png

5.png

先选择COM8,因为我们这块单片机用的是串口COM8_CDC1。

然后老师通过一个响指演示了频率到FFT绘图的转化。

6.png

可以看到中心频率处于2.5左右。

这个功能可以帮助我们快速分析频率。

四、强大的AI功能

7.png

某大佬已经实现了从普通51到AI51的跨越,实现了手写计算器,预示着这块芯片开始向AI领域进军,其实现意义非凡,可谓是关键且卓越的一步。

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-7 21:42:25 | 显示全部楼层

第二集

硬件部分

PCB 短路帽 数据线


8.png

9.png

支持type a ,type c

USB转双串口最高可以达到十兆的波特率

红色电容器可以调节示波器的波形

支持TFT彩屏以及OLED屏

红外接收等


10.png

无源晶振可以做到零误差

E2PROM可以保证数据不丢失

DS18B20温度传感器

软件介绍


11.png

添加头文件增加国产芯片型号

ISP软件可以在官网下载


12.png

下载选择24兆,找到要烧入的文件然后烧入

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-7 22:11:35 | 显示全部楼层

第三集

怎么点灯?

新建工程的基础配置

17.png

经典起
手,定义主函数主循环然后尝试编译


14.png

选择芯片为Ai8051U,勾上四字节

其余默认配置

Code Run Size选用64


15.png

勾选生成HEX文件(必要)

选80

编程小知识,尖括号为系统路径,双引号为当前目录优先查找

关于头文件的路径,可以在魔术棒——C/C++——设置里面新建

找到头文件AI8051U到当前目录后就可以开始打代码啦

原理讲解


17.png

18.png

开关是一个BJT管,BJT的特性就在于其是否有基极电流,如果有的话那么对于BJT上面的电流集电极电流会进行一个β倍的放大,发射极电流IE = βIC


20.png

当然如果没有基极电流的话那就没有电流通过发射级,所以可以等效成一个开关*

原理图中一排的放光二极管就是我们要操作的灯泡啦,二极管的特性就是正极大于负极的时候二极管导通,反过来不导通,所以我们如果想点亮它,就需要操纵单片机使得GPIO口即文中类似P0.0的端口输出低电平,然后与开关顶上的3.3伏特形成一个电势差使二极管点亮*

21.png

配置IO口,即P端口


22.png

提供了两种模式,两种模式对于P口的控制是不同的


23.png

烧入软件提供了IO自动配置工具


24.png

最后实验成功

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-8 22:33:34 | 显示全部楼层

第四集

USB不停电下载

实现编译即下载

25.png

26.png

官网——软件工具——库函数——USB库文件

然后下载例程方便演示


27.png

两个汇编文件删掉后,剩下的两两区别就死HID下载喝CDC下载的区别,我们一般使用CDC下载即可

例程多一个Lib文件(较于上一节课代码)


28.png

找到USB的头文件,根据下载方式选择 带有 interrupt的文件是中断模式文件

查询和中断的区别在于:

查询模式在于每一次发送或者接收文件后都要检查相应的标志位后再继续传输,通常在一个while循环中执行

而中断模式则是每当数据传输时就会触发相应的中断,在中断内部执行相应操作,包括标志位的查询,其他外设操作等等

在收发数据这一块其实不管是中断模式还是查询模式,都会有可能会漏值的缺点。我们还需要在程序中定义环形缓冲区,这样就能有效解决这种情况。当然内部的USB收发应该很复杂,解决方式也可能不同。

对于漏值的原因,则是触发中断和查询过程都是需要时间的,在这段时间中就有可能产生少接收或者少发送值的情况,常见的是漏掉几个按键,或者和其他外设联动时会发生这种情况。

29.png

如下配置头文件和Lib文件即可

初始化函数

搜索usb_init()

但是搜不到 因为函数本体在LIb文件中,这个Lib文件集成了很多驱动文件,为了方便移植和不被修改而不可读

开始操作


30.png

配置准双向口


31.png

USB的寄存器都在FAXFR列表里面所以要使能列表

所以对这个寄存器| 0x80

为什么这样呢

这是位或的小知识 可以保证最高位置1 其他位保持原样


32.png

也是| 0x80,把USB的中断打开,在B7位

然后EA= 1 把所有中断打开

这里和普通的51是一样的没什么区别


33.png

最后一段(有点糊)这段实现了单片机对电脑的命令,让电脑自动下载,也就是不掉电下载

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-8 22:35:51 | 显示全部楼层

第五集

C语言基础


34.png

重定义打印函数(其实就是自己用传统打印造一个USB打印函数)

这里给出一个模板代码

int printf_hid (const char *format)
{
    char String[100];
    va_list arg;//定义一个可变的参数列表的数据类型
    va_start(arg,format);//从format处开始接收参数
    vsprintf(String,format,arg);//将参数类型——参数值打印到数组里
    va_end(arg);//结束变量
    Usb_send(String);//USB的发送函数,我这里瞎掰的,发送这个要传输的字符串
}


35.png


36.png


37.png

强制转换 全局变量


38.png

非0则1 判断语句里是这样的

while(66){}

可以进入循环,因为只要不是0就是1判断语句里


39.png

优先级:非与或


40.png

与运算的话有0结果就是0

或运算的话有1结果就是1

非就是取反

左移右移就是按位左移右移

高位或者低位要补0


41.png

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-9 21:59:44 | 显示全部楼层

I/O 输入输出

概念

42.png

高低电平是有电压范围的

这个范围也有上下限

43.png

上下拉的概念


44.png

这里有抽象小图一则,上拉就是导通就有3.3,关闭就低电平

下拉就反过来

按键小则


45.png

小任务(按键控制LED)

代码部分

if (P32 == 0)
{
    P00 = 1;
}
else
{
    P00 = 0;
}

按下给P口高电平,松开给低电平。


46.png


47.png

延时函数,可以用烧入软件生成,然后用延时函数在按下后进行消抖处理

什么是消抖?实际上你按下机械按键的时候,其中的电平可能会来回跳动,这种情况下就会产生波动的电平信号,这种噪声对于单片机来说是很烦的,所以我们需要利用延时函数跳过这段时间

回复 支持 反对

使用道具 举报 送花

已绑定手机

1

主题

8

回帖

43

积分

新手上路

积分
43
发表于 2024-12-9 22:01:16 | 显示全部楼层

第七集

中断的概念

这里引用韦老师的中断介绍


48.png

定时器中断


49.png

很准,然后定时器中断很常用,无敌的


50.png

C/T置0 TR置1就能使能这个定时器,有两个寄存器来设置定时器的状态

可以在手册里具体看某个寄存器的作用


51.png

定时器初始化的过程就是配置哪些定时器寄存器,这没什么好说的,如何配置都在手册里具体写着

TH0 TL0 对应的值就是定时器里的计数值


52.png

这里是计算公式,通过配置TH0 TL0 可以获得定时的时间和定时的频率

任务三代码演示


53.png

这个是定时器中断函数里的配置

主函数配置如下


54.png

最后实验成功

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4872

积分

论坛元老

积分
4872
发表于 2025-1-6 17:37:20 | 显示全部楼层
老哥 ,,继续啊
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 22:02 , Processed in 0.137203 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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