32系列 AI8051U系列 问题备忘录
AI的251内核是本人很喜欢用的一个型号,因为EDATA可以直接地址访问,同主频下,综合效率甚至高于M3AI方面:型号更新很快,基本上半年一个主力型号,下一个主力系列8052U也正在路上,相信不久就能见到了。
本贴将汇集本人使用 251内核型号 过程中所遇到的相关的问题归集备忘,也提示坛友避免踩坑。
同时也督促AI注重细节,偶尔也得放慢脚步,回头看看,稳固自身境界。
祝AI每个型号和系列都成为经典永恒流传。
1. DMA时钟问题:
问题描述:当正在使用DMA时,请勿进入IDL(空闲模式).
适用于32系列,8051U系列.
处理方法,不使用空闲模式.
相关贴子:
https://www.stcaimcu.com/thread-6511-1-1.html
2. PLL时钟问题:
如果SYSCLK使用的时钟源是PLL分频后的时钟.
则运行命令 IAP_CONTR=0X60; //复位到系统ISP区域
不但不会复位,还会死机。(在8051U系列测试得到的结果)
处理方法:增加一些语句
void ResetToIsp(void)
{
CLKSEL = 0; //重新选回默认时钟
CLKDIV = 2; //降低主频
USBCON = 0x00;//这里,如果USB设备已经初始化,则需要主动断开USB,否则电脑无法检测到USB-Writer
delay_ms(2); //加入大于1毫秒的延时
IAP_CONTR=0X60; //现在复位在系统ISP区,没问题了
}
3. LCM_DMA 基址4字节对齐问题
这个问题其实也可以不算是问题,只是数据手册上无相关说明,所以也只能当问题处理了。
建议手册上增加说明,而不是在论坛上宣传。
解决办法:
u8 xdata XX_Buffer _at_ 0x????; //使用绝对定位
或:
u8 xdata XX_Buffer __attribute__((aligned (4))); //强制4字节对齐
相关贴子:
https://www.stcaimcu.com/thread-16306-1-1.html
4. SPI_DMA 启用FIFO的问题:(在8051U系列测试得到的结果)
条件:开启高速SIP模式,并打开FIFO功能。
当 DMA配制寄存器 DMA_SPI_CFG 发送使能,并且接收不使能时,
运行过一次DMA结束后,会使接收FIFO不空,
使用 CLRFIFO: 清除SPIDMA接收FIFO 无效!(多次清除都是无效!)
当下次启用DMA接收时,会提前接收FIFO内遗留的无效数据,重而产生错误。
解决办法:
1. 从不使用FIFO。
2. 仅发送时,不使用FIFO。
(只开接收,或接收和发送同时开启时,可以使用FIFO功能。)
打开FIFO的好处是:每字节之间间隔减少,总体速率有提升
Keil C251相关:
遇到再补充
如果以后遇到251内核使用的问题,会在本帖补充。坛友们也一起来补充。
感谢您对STC32系列和AI8051U系列的深入使用与反馈。以下是对您提到的问题的详细分析与建议:
1. DMA时钟问题
问题描述:当正在使用DMA时,请勿进入IDL(空闲模式)。
适用型号:STC32系列,AI8051U系列。
处理方法:避免使用空闲模式。
分析:DMA(直接内存访问)操作依赖于系统时钟的持续运行。进入IDL模式后,系统时钟可能会暂停或降低频率,导致DMA操作无法正常完成,进而引发数据错误或系统死机。因此,在DMA操作期间,应确保系统时钟保持稳定,避免进入IDL模式。
建议:在设计系统时,建议在DMA操作期间禁用IDL模式,或通过软件控制确保DMA操作完成后再进入IDL模式。
2. PLL时钟问题
问题描述:如果SYSCLK使用的时钟源是PLL分频后的时钟,执行IAPCONTR=0X60;复位命令时,系统不会复位,而是死机。
适用型号:AI8051U系列。
处理方法:在复位前,重新选择默认时钟并降低主频,确保系统稳定复位。
分析:PLL(锁相环)时钟源在复位时可能无法正确切换,导致系统无法正常复位。通过重新选择默认时钟并降低主频,可以确保系统在复位时处于稳定状态。
建议:在复位前,建议按照以下步骤操作:
c
void ResetToIsp(void) {
CLKSEL = 0; // 重新选回默认时钟
CLKDIV = 2; // 降低主频
USBCON = 0x00;// 如果USB设备已初始化,主动断开USB
delayms(2); // 加入大于1毫秒的延时
IAPCONTR=0X60; // 现在复位在系统ISP区,没问题了
}
3. LCMDMA 基址4字节对齐问题
问题描述:LCMDMA基址需要4字节对齐,但数据手册中未明确说明。
适用型号:STC32系列,AI8051U系列。
处理方法:确保LCMDMA基址为4字节对齐。
分析:DMA操作通常要求数据地址对齐,以提高数据传输效率。LCMDMA基址未对齐可能导致数据传输错误或效率降低。
建议:在使用LCMDMA时,确保基址为4字节对齐,可以通过以下方式实现:
c
uint32t baseaddress = (uint32t)buffer & ~0x03; // 确保基址为4字节对齐
总结
STC32系列和AI8051U系列在性能与功能上表现出色,但在实际使用中仍需注意一些细节问题。通过合理的设计与优化,可以充分发挥其潜力,避免潜在问题。希望以上分析与建议能对您有所帮助,也期待STC在未来的型号中继续优化与完善,推出更多经典产品。
祝您使用愉快,期待您的进一步反馈与交流。
[本文内容由国芯人工智能辅助生成,仅供参考]
页:
[1]