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

新手咨询AI8051U的一些问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-05-12 14:32:25

18

主题

38

回帖

200

积分

中级会员

积分
200
发表于 2025-2-17 10:24:54 | 显示全部楼层 |阅读模式
正在学习中AI8051U遇到一些问题,还请各位大佬指教一二


Ai8051U具有8位模式与32位模式。
问题1在用户程序中,如何在这两种模式间切换?(或说涉及那个SFR)? 可以在程序运行后切换的吧,这个如何切换?
程序运行的速度与时钟直接关系,在精准时序控制时需要了解系统时钟频率。

问题2:系统时钟从哪几个SFR读取?当然,温飘及时钟误差不在考虑之列。
Ai8051U扩展了片内Ram的容量,相应的edata达到了2K,这2K皆可用于堆栈,对此U51扩展在SP基础上增加了SPH。

问题3:在8位模式下SPH起不起作用?换句话问题是:如果当前指针=255时,再加1后,SP必定清零,但SPH=0还是=1?
当(SPH,SP)=0x7ff时,再有一个8位数据入栈,SP必定=0,高位SPH是清零还是=8?还是目前Ai8051U版本SPH只使用最低三位而不管其高五位为任何值?

问题4,edata中地址为100H-3FFh的单元用什么作为地址指针?
除了上面所述的栈指针,有什么指针,可以访问这些地址单元?


问题5:规格书中提到了以下三个区:用户程序区,用户系统区,系统ISP区。根据操作体验,Ai8051U存在厂家手册未详细说明(或许厂家故意保留)的系统区,与用户程序区,很好理解。显然,上电启动时,先从区统区运行,当需要烧写用户程序时,则启动ISP功能,否则运行用户程序。
现在述及有三个区,用户系统区,系统ISP区又位于什么地方?

问题6,
总结:1、用户程序软件复位到系统区,无论用户软件是否对 SWRSTF 写 1 清 0,USB 下载均不需要 P3.2 接地
2、对芯片重新上电复位到系统区,无论用户软件是否对 SWRSTF 写 1 清 0,USB 下载均需要 P3.2 接地
3、按键复位/看门狗复位/低压复位到系统区,如果用户软件对 SWRSTF 写 1 清 0,则 USB 下载需要 P3.2接地;如果用户不对 SWRSTF 写 1 清 0,保持 SWRSTF 为 1,则 USB 下载不需要 P3.2 接地。
在学习心得中,我也拟抄写这段文字。
但依然没有理解这一段文字。
这三个复位应该均复位到系统区(用IAP_CONTR = 0x20; 复位用户程序区 则到不了程序区),此时,用户程序尚没有运行,如用对SWRSTF进行写1清0?


问题7关于位寻址
规格书原文是DATA 区域的 00H~1FH 为寄存器 R0~R7 的映射区,不可位寻址,剩下 20H~7FH,共 96 个字节,每个字节均可位寻址。
这里的疑问是:DATA 区域的 00H~1FH 为什么不可位寻址?对于SFR保留位,用户程序不用操作很容易理解,而DATA 区域的00H~1FH 只是存储区,mcu怎么不能位寻址?是基于与R0-R7区的重叠吗?还是存在一对四的结构关系?那用户软件对此寻址mcu仅执行nop操作?




回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-05-12 14:26:06
已绑定手机

1

主题

4

回帖

407

积分

中级会员

积分
407
发表于 2025-2-17 10:34:39 | 显示全部楼层
求大咖回答,正好学习先
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-05-12 07:36:42
已绑定手机
已实名认证

110

主题

2250

回帖

5566

积分

版主

积分
5566
发表于 2025-2-17 10:52:28 | 显示全部楼层
1.目前应该是只能在STC-ISP中切换(技术手册中我并没有看到有关切换8bit和32bit模式的寄存器)
2.系统时钟没办法直接读取,目前有两种方式,都是针对使用内部高速HIRC的频率读取,外部时钟是读取不到的。
方式1是通过对比CHIPID和实际的VRTRIM、IRTRIM来获取有限的几个时钟频率
方式2是通过T11和T4,同时测量内部的(48Mhz)USB时钟和HIRC时钟计算得到,具体程序可以参考这里:
通过内部双时钟源实现自适应下载时钟主频 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯技术交流网站 - AI32位8051交流社区
5.系统ISP区是一块独立的区域,用于存储不可更改,只读的ISP下载程序。用户程序区、用户系统区都是位于同一块FLASH上的,具体划分依靠STC-ISP上的设置。
6.对SWRSTF的操作是触发复位的时候作用的,并不是触发复位以后再设置,先后顺序反掉了,具体操作是这样的:
截图202502171052385290.jpg
3.4.7. 这个我暂时也不清楚,可以请其他人帮你解答

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-12 09:01:08
已绑定手机

77

主题

4900

回帖

8564

积分

超级版主

DebugLab

积分
8564
发表于 2025-2-17 10:59:45 | 显示全部楼层
用户程序中无法切换,只能由ISP软件下载时设置
IRCBAND和IRCTRIM决定内部时钟频率,由于非线性和可能的个体与批次差异,不能由寄存器值反推频率,但如果使用了预置IRC参数的常用频率,可以到CHIPID只读特殊功能寄存器的IRC参数区域看哪个参数匹配

截图202502171042059912.jpg

截图202502171042225292.jpg

截图202502171042402481.jpg

截图202502171042529952.jpg

系统ISP区对用户不可见,用户系统区、用户程序区、用户EEPROM区,位于全部FLASH,地址由用户自定义(IAP型号,以扇区为单位)
一旦软件复位,SWRST硬件置1,用于下次运行用户程序时,在用户程序中判断为何复位的,判断后要写1清零,以便下次复位后再判断为何复位,系统区对该位只读,用于免按键下载
截图202502171049426813.jpg

截图202502171050116329.jpg

R0~R7区域不可位寻址,位变量不能定义在R0~R7区域
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-05-12 14:26:06
已绑定手机

1

主题

4

回帖

407

积分

中级会员

积分
407
发表于 2025-2-17 13:31:51 | 显示全部楼层
谢谢大咖的回答,明白了很多
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-05-12 14:32:25

18

主题

38

回帖

200

积分

中级会员

积分
200
发表于 2025-2-17 13:32:55 | 显示全部楼层
Debu*** 发表于 2025-2-17 10:59
用户程序中无法切换,只能由ISP软件下载时设置
IRCBAND和IRCTRIM决定内部时钟频率,由于非线性和可能的个体 ...

感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-05-12 00:02:58

10

主题

1165

回帖

5223

积分

论坛元老

积分
5223
发表于 2025-2-18 12:49:56 | 显示全部楼层




8位模式,无访问 2K edata 的指令
但还是可以使用 :
DMA, QSPI, MDU32, TFPU
及将来的 DSP



8位地址只能寻址256字节
因为8位模式只有data/idata,并且数据指针宽度是8位的,所以最大只能寻址256Bytes。




回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-12 22:38 , Processed in 0.127107 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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