Ai8051U学习之路_YXJ
<p><strong>Ai8051U一、二集学习心得</strong></p><p>一、二集主要讲了、AI8051U实验箱的各种功能、以及AI8051U对比其他单片机的优势、还有开发环境的搭与程序下载步骤。</p>
<blockquote>
<p>1.屏幕显示和视频播放(flash编程器)<br />
2.IIS录放音<br />
3.PWM_DMA.<br />
4.频谱分析仪(上位机)<br />
5.手写计算器.<br />
6.QSPI,PWM移相,硬件乘除,单精度浮点</p>
</blockquote>
<blockquote>
<p><strong>一、硬件方面</strong></p>
<p><strong>1.屏幕显示和视频播放(flash编程器)</strong></p>
<p>可以实现各种界面的刷新而且帧率不低、包括汉字、图片、英文、旋转显示、它用的是8080的八位并口、做图显菜单效果很好、屏幕校准也通过点击准星看出屏幕的反应也比较灵敏、而且还可以当手写板来用</p>
</blockquote>
<blockquote>
<p><strong>2.IIS录放音</strong></p>
<p>在这里需要一个喇叭、所以我们需要外置喇叭插在实验箱的音频接口上、烧录好IIS录放音程序后,我们按下2键开始录音,此时数码管显示录音时间,再按下2停止录音、按下6键增大音量、数码管会有显示多少音量,最后按下3键放音。</p>
<p><strong>3.PWM_DMA.</strong></p>
<p>需要外接W2812的点阵屏上这里给展示的是8*32点阵屏,它是直接可以控制1000多个W2812的灯进行显示,这个是它最强悍的地方PWM+DMA,而且也不会有任何干扰</p>
<p><strong>4.频谱分析仪(上位机)</strong></p>
<p>展示了频谱分析仪的功能,将程序下载单片机中,晶振频率选择40M.在AIapp-isp打开FFT绘图功能,选择与之相对应的串口com8、以打个响指为例子、测得中心频率是2.5左右(声音大小不一样,频率就不一样)、也利用了IIS录放音的功能、还有就是算力足够就可以实现FFT的快速刷新,从而达到实时捕捉音频的效果</p>
<p><strong>5.手写计算器.</strong></p>
<p>它可以实现一个手写计算器功能、我们拿手写笔在屏幕上写出数字进行相加、相乘等等,它可以快速算出答案</p>
<p><strong>6.QSPI,PWM移相,硬件乘除,单精度浮点</strong></p>
<p>主要展示了它的把图片导入到W25Q128进行一个动画显示的功能</p>
<p><strong>除此之外还有很多其他强大的功能,如下</strong></p>
<p>简介 Ai8051.U,USB 型1T 8051,支持32位和8位指令集;RMB2.3管脚兼容天王级别的:. 89C52RC,12C5A60S2<br />
要兼容 8位805-1指令集,可以用Keil C51/IAR/SDCC编译器===就相当于更强大的.8H8K64U.<br />
要兼容 32位805.1指令集;可以用 Keil C251编译器,双核兼容设计= ==就相当于更强大的32G12K128,32G8K6434K SRAM(2K edata, 32K xdata), 64K Flash TFPU@120MHz,硬件浮点/硬件三角函数运算器 DMA支持PWM,DMA支持外设直接到外设,P2P<br />
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC USB,4组串口,12位ADC,轨到轨比较器<br />
QSPI,SPI,I2S,12C,TFT-i8080/M6800接口 PDIP40,LQFP44,LQFP48</p>
<p>通过几集教程的学习让我了解了这款强大的单片机,它不仅是兼容80C51的8位机,也是优秀的16位机、更是32位机器、而且按照以往的型号都是STC或IAP开头的,这次是以AI开头注定不一般!!!超高速32位8051内核(1T)比传统8051约快70倍以上、而且支持IIS音频采集、TFT彩屏、三角函数/反三角函数运算、我最喜欢的是它的频谱分析仪功能,能够时实采集频率。DMA_PWM、还可以当示波器来用!<strong>串口芯片用的AI8H2K12U,USB转双串口,这也是我喜欢的优点之一!</strong> 下图就是它的各种硬件功能</p>
<p><img src="data/attachment/forum/202412/10/114434iz6ftfoo6iycfxvr.jpg" alt="029d9a1b2d99991173b75c5bf88fda3.jpg" /></p>
<p><strong>二、软件方面</strong></p>
<p>开发环境搭建 在<a href="https://www.stcai.com/">深圳国芯人工智能有限公司 (stcai.com)</a> 官网下载</p>
<p>keil5、Aiapp-isp、芯片使用手册等等,keil_c251软件找客服要</p>
<p>1.编程软件为keil5_C251,可以与RAM,C51兼容(已测试),安装完毕之后需要添加licence,许可号,不添加的话代码会有大小限制</p>
<p>2.下载软件为Aiapp-isp的最新版本,官网下载即可,安装后需要将芯片包加入到keil当中</p>
<p>3.中断号默认最大为31,需要安装软件“拓展keil的C代码中断号”</p>
</blockquote>
<blockquote>
<p><strong>下载程序步骤:</strong></p>
<p>一、选择芯片;打开Aiapp-isp软件 以AI8051U32K64为例子,先选择型号AI8051U-32K64。</p>
<p>二、选择串口;用USB线把开发板与电脑连接之后,需要先长按P3.2按键(USB模式按键)之后按下,电源断开键,先送电源键,后松P3.2,电脑才会识别HID1串口)</p>
<p>三、选择程序文件;找到“打开程序文件” 弹出串口-选择示例程序 - 32bitHEX格式文件(文件夹没有标注就是32bit)</p>
<p>四、选择频率和CPU指令模式;以24M程序为例,打开要下载的程序源码在里面找到 #defineMAIN_fosc24000000L (24000000L就是24M)所以回到AIapp-isp软件在“输入用户程序运行时的IRC频率”选择24Mhz;CPU指令模式选择32-Bit</p>
<p>五、下载程序点击下载/编程即可</p>
</blockquote>
<p><em><strong>以上就是我对这集的个人心得、感谢大家观看!</strong></em></p>
<p><strong>Ai8051U第三集,学习心得</strong></p>
<p>这集主要讲了是如何用Keil去创建工程,新建main.c文件、如何加载ai8051u的头文件、以及其他keil的配置、实操部分是讲了如何点灯!</p>
<p><strong>一、操作步骤</strong></p>
<blockquote>
<p>现在桌面新建一个文件夹命名demo</p>
<p>首先双击打开keil软件,先close project,关闭之前的工程,然后新建工程 project-New uVision project</p>
<p>保存到刚才新建的桌面文件夹内!命名为“demo” 此时弹出窗口选择芯片,芯片选择ai8051u(32bit)。之后点击软件内“白纸”图标(即file-new)然后将文本框文件加入到source group1 文件下,命名main.c(注意.c后缀必须有)。</p>
<p>然后点击魔法棒进行参数配置,点击Tar-get</p>
<p>1、CPU Mode选择Source(251 native)</p>
<p>2、Memory Model 选择XSmall</p>
<p>3、code rom size(内存大小) 选择 large64K(注意如果代码超过64K,则需要另外配置!64K内均适用)</p>
<p>点击output</p>
<p>1、在createHEX打勾 HEX Format 选择HEX-80(64K以内选择这个)</p>
<p>最后点击下面OK</p>
<p>接着添加头文件,打开Aiapp-isp软件找到头文件,选择Ai8051U(32bit)头文件-保存文件到demo文件夹下</p>
</blockquote>
<p>然后点击编译图标进行编译rebuild,两个箭头的是编译全部文件</p>
<p>然后进行程序烧录,具体烧录步骤请看我上一篇文章</p>
<p><strong>二、电路分析</strong></p>
<p><img src="data/attachment/forum/202412/09/192836nsplspulhu7hil7z.png" alt="5017bab5597fc36d95277fd1acc77fd.png" title="5017bab5597fc36d95277fd1acc77fd.png" /></p>
<blockquote>
<p>这个电路图是AI8051U实验箱的电路图,如果让LED灯全部点亮、SS8550是PNP三极管、我们首先把SS8050的基级设置为低电平,即P4.0为低电平,然后在把P0总线全部都设置为低电平,这样以灌电流的方法把灯全部点亮、当然了如果想让灯闪烁,也可以插入一段延时程序!</p>
</blockquote>
<p><em><strong>以上就是我对这集的个人心得、感谢大家观看!</strong></em></p>
<p><strong>Ai8051U第四集、学习心得</strong></p>
<p>由于之前下载程序方式比较繁琐需要断电下载(操作步骤看第一集学习心得)、这样每次下载需要耗费时间去按按键,本集主要讲解了如何利用软件程序来实现,不断电下载!</p>
<blockquote>
<p><a href="https://www.stcai.com/gjrj">进入深圳国芯人工智能有限公司-工具软件 (stcai.com)</a> 下载USB库文件</p>
</blockquote>
<blockquote>
<p>下载完毕之后解压这个安装包</p>
<p>另新建个文件夹“USB不断电下载”把之前创建好的demo工程复制过来,然后咱们使用“查询模式STC-CDC库文件”进入之后把“stc_usb_cdc_32”和“stc32_stc8_usb.h”文件复制到USB不断电文件内,分别把复制过来的文件加入工程当中!</p>
<p>编译之后在下载发现不需要用按键断电了,可以直接下载了哦!</p>
</blockquote>
<blockquote>
<p>其中需要注意的是错误57的屏蔽,以及相关寄存器的功能需要了解一下</p>
</blockquote>
<blockquote>
<p>USB接口占用了P3.0和P3.1,这两个口默认是串1接口,</p>
<p>若想使用串口,需要将引脚映射到其他端口(与STM32类似),通过P_SW1寄存器来进行选择还有注意的点就是,程序中,最顶部程序“@STCISP#”与官方定义的字段(aiapp-isp软件)要相一致(不然会出错)当然了咱们也可以自定义字段。</p>
</blockquote>
<p><em><strong>以上就是我对这集的学习心得、感谢大家收看</strong></em></p>
<p><strong>Ai8051U第五集、学习心得</strong></p>
<blockquote>
<p>本集主要讲解了C语言基础教程</p>
<p>1、C语言USB-CDC串口之printf函数的实现</p>
<p>2、数的进制:2进制、8进制、10进制、16进制之间的转换</p>
<p>3、数据的基本类型</p>
<p>4、C语言常用的运算符</p>
<blockquote>
<p><strong>1、C语言USB-CDC串口之printf函数的实现</strong></p>
<p>程序源码</p>
<p><strong>2、数的进制:2进制、10进制、16进制之间的转换</strong></p>
<ul>
<li><strong>HEX</strong>,英文全称 <strong>Hexadecimal</strong>,表示<strong>十六进制</strong>。</li>
<li><strong>DEC</strong>,英文全称 <strong>Decimal</strong>,表示<strong>十进制</strong>。</li>
<li><strong>OCT</strong>,英文全称 <strong>Octal</strong>,表示<strong>八进制</strong>。</li>
<li><strong>BIN</strong>,英文全称 <strong>Binary</strong>,表示<strong>二进制</strong>。<br />
个人总结;非十进制数转换十进制数用乘法、十进制转非十进制用除法</li>
<li>以138(16进制为例)非10进制转10进制用乘法</li>
<li>1 *16^2+3 *16^1+8 *16^0 = 256+48+8=312(10进制)</li>
<li>换言之312(10进制)转换16进制用短除法除以16即可</li>
<li></li>
</ul>
<p><strong>3、数据的基本类型</strong></p>
<p>常用的数据基本类型就是 int、char、float</p>
<p>unsigned 是无符号的意思,即内存范围没有负数</p>
<p><strong>4、C语言常用的运算符</strong></p>
<p>讲述了常用的运算符加+、减-、乘*、除/(注意除法无法取余数)、取余%、递增++、--,递增又分为前缀递增和后缀递增</p>
<p>运算符;等于== 、不等于!=、大于>、小于<、大于等于>=、小于等于<=等等</p>
</blockquote>
</blockquote>
<p><em><strong>以上就是我对这集的学习总结、谢谢大家收看</strong></em></p>
<p><strong>Ai8051U第六集、学习心得</strong></p>
<blockquote>
<p>1.什么是GPIO</p>
<p>2.按键输入检测</p>
<p>3.程序编写</p>
<blockquote>
<p><strong>1.什么是GPIO</strong></p>
<p>GPIO(General Purpose I/O'Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。</p>
<p>什么是高低电平?</p>
<p>高电平就是指接近于电源正极电压的电平;也叫逻辑“1”<br />
单片机输出高电平就是输出VCC电压,输出低电平就是输出GND的电压。</p>
<p>灌电流和拉电流;灌电流通俗易懂理解就是往GPIO里面灌入电流</p>
<p>拉电流与灌电流相反,但是由于单片机是强下拉弱上拉、拉电流驱动力可能不够(几百uA)如果增强驱动力的话推荐使用推挽输出,可达20mA</p>
<p>正常咱们没有特殊需求的话配置准双向口即可</p>
<p>根据芯片手册得知输入低电平不能高于0.99V、高电平不能低于1.18V</p>
<p><strong>2.按键输入检测</strong></p>
<p>按键没按下是高电平,由于按键另一端接地,所以按下就是低电平,根据此逻辑,我们可以编写对应代码</p>
<p><strong>3.程序编写</strong></p>
<p>咱们可以用if else语句可以实现,当if(sw==0)时表示按键已经按下,此时LED亮else LED熄灭,但是这里还是会存在一个问题,就是因为按键是弹片的按下按下会有抖动,大约在20ms左右,这时需要我编写一个消抖的延时函数20ms,延时函数用isp软件生成即可。还有在做;按一下灭,按一下亮的小灯实验中,需要加入一个抬起检测while(抬起条件)来解决按一下LED电平反复跳转问题!</p>
</blockquote>
</blockquote>
<p><strong>以上就是我对这集的个人心得、感谢大家观看!</strong></p>
主频更是达到120Mhz比STM32C8T6强的太多
勘误。
这是错的。
只有浮点运算单元和PWM单元跑到这个速度,主频只有45M
<p><strong>Ai8051U第7集、学习心得</strong></p>
<p>主要讲解了如何使用定时器中断</p>
<p>什么是中断?</p>
<p>举例:你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。</p>
<p>通俗易懂的说就是能同时干两种活提高执行效率,正常程序都是主程序从上自下执行。插入了中断时,可以相隔一段时间访问一次中断。</p>
<p>定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止当前的工作跳转到事先定义好的定时器中断函数里,函数里可以做一些周期性的事情。</p>
<p>计数器:一般用于检测外来脉冲信号,给计数器设置一个次数,次数到了系统停止当前的工作跳转到事先定义好的计数器中断函数里,函数里做相应的事情。</p>
<p>以80C51举例子</p>
<p>正常8051定时器分四种模式,方式0 ;13位定时器(为了兼容上一代)计数范围1-8192、方式1;16位定时器计数范围1-65536、方式2;8位自动重装定时器(能够自动重装初值蛋只能计数到1-255)方式3;定时器就会被分成两个独立的计数器或者定时器。分为高八位和低八位</p>
<p>Ai8051U有T0、T1、T2、T3、T4、T11共6个定时器相比于8051它只有T0和T1两个定时器,而且Ai8051U的定时器支持16位模式,更是支持24位模式(8位预分频器+16位定时器)功能非常强大</p>
<p>AIapp-isp软甲内部有个“定时计算器功能”我们需要一个延时3S的定时器,但是发现无法产生指定的时间,需要我们修改一些参数时钟频率24M、定时器0、24位自动重载、定时器时钟选择12T</p>
<p>将软件生成的代码复制到咱自己的.c文件内,编程方式和传统51一样</p>
<p>中断函数 iterrupt 1放在最后一行,定时器初值程序放在main()函数上面、main()函数直接调用定时器函数Timer0_Init();中断函数每3S执行一次,只要我们把取反程序放在这个中断函数内就可实现LED亮3S灭3S</p>
<p>图下就是Ai8051U的定时器0的功能框图</p>
<p><img src="data/attachment/forum/202412/10/105824rfyjf5zjw5jnzwdh.png" alt="image.png" title="image.png" /></p>
<p>从框图可以看出12T,即CPU会12分频,IT即CPU不分频,定时器0有两个隐藏的8位定时器RL_TL0和RL_TH0,他们两个一组合,就巧妙的实现了16位自动重载定时器,将定时器初值分别送给TH0和TL0,接着就是TF0它是定时器0溢出中断标志位、由硬件自动清零,->>interruput 只要打开这个允许就可以产生中断信号,打开它也不能产生中断需要将“总开关”即EA,打开即可</p>
<p><strong>以上就是我对这集的个人心得、感谢大家观看!</strong></p>
VCC 发表于 2024-12-9 19:51
勘误。
这是错的。
已经改了
已经申请好了
<p><strong>已经申请好了,感谢国芯科技</strong></p><p><img src="data/attachment/forum/202412/13/074654c5xwbzoq70oub0px.jpg" alt="ec95dc15c30bee4586c685aadf9a6b9.jpg" title="ec95dc15c30bee4586c685aadf9a6b9.jpg" /></p>
页:
[1]