AI8051U-测试板子研发
由于AI8051U的功能比较多丰富,决定将外设配备齐全,画了一个核心板子,麻烦工程师看下哪里需要修正,请提下宝贵意见。
先表示感谢!
说明:工作电压为3.3V~4.5V 之间,此板子功能包括:
1.通过I8080_DMA驱动黑白LCD160160液晶显示屏幕。
2.通过QSPI驱动W25Q和W25N系列的Flash存储。
3.通过Uart 驱动蓝牙(BlueTooth)芯片,并有低功耗和连接显示。
4.通过P32~P35驱动I2S
5.留下14个备用引脚共后续测试。
其中有些电路的设计,我是参考擎天柱的,但是能力有限可能设计的有问题,请工程师多挑毛病。
您好,感谢您分享AI8051U测试板的设计方案。以下是对该板子的初步评审意见,主要从电源设计、接口配置、外设驱动、信号完整性及可测试性等方面进行分析,并提出一些优化建议,供您参考。
一、电源设计建议
您提到板子的工作电压为33V~45V,这是一个较高的电压范围,建议注意以下几点:
1. 电源转换模块选型:
AI8051U芯片本身工作电压可能为3.3V或5V,因此需要DC-DC降压模块将输入电压降至芯片所需电压。建议选用高效率、低纹波的同步整流型DC-DC芯片,如TI的LM5116或MP2307系列,并预留输入/输出滤波电容以提高稳定性。
2. 过压与反接保护:
输入电压范围较高,建议加入TVS二极管(如SM712)和保险丝(或PTC)以防止电压浪涌和反接损坏主控芯片。
3. 电源隔离与分区供电:
若有多个外设模块(如LCD、Flash、蓝牙等),建议采用分区供电策略,使用LDO或DC-DC模块为不同模块独立供电,减少相互干扰。
二、外设接口设计评审
1. I8080DMA驱动LCD
时序匹配性:I8080接口为并行接口,需确保主控芯片与LCD模块的时序匹配,包括读写周期、地址建立/保持时间等。建议查阅LCD手册,确认主控是否支持相应模式。
信号完整性:并行总线走线较长时容易产生干扰,建议对数据线、控制线进行等长处理,并加入端接电阻或RC缓冲电路。
DMA使用合理性:DMA可以提升传输效率,但需注意DMA通道与LCD控制器的映射关系,确保数据流无冲突。
2. QSPI驱动Flash(W25Q/W25N)
时钟频率与模式:QSPI接口支持多种模式(如单线、双线、四线),建议根据Flash型号选择合适的时钟频率和数据线模式,避免超频导致读写失败。
引脚复用与冲突检查:确认QSPI引脚未与其他外设冲突,尤其是复用为GPIO或其他功能时。
预留Flash容量扩展接口:若后续可能升级Flash容量,建议在PCB上预留焊盘或排针。
3. UART驱动蓝牙模块
电平匹配:蓝牙模块通常为3.3V逻辑电平,需确保UART接口电平匹配,必要时加入电平转换电路(如TXS0108)。
低功耗设计支持:蓝牙模块的低功耗模式(如Sleep Mode)需通过主控正确控制,建议预留唤醒引脚或中断引脚。
预留调试接口:建议在蓝牙模块附近预留UART调试接口,便于后续调试通信协议或日志输出。
4. I2S音频接口(P32~P35)
接口定义确认:I2S接口通常包括BCLK、WS、SD等信号,建议确认P32~P35对应的I2S功能定义是否与主控匹配。
音频输出驱动能力:若直接驱动耳机或扬声器,需考虑主控输出能力是否足够,否则建议加入音频功放模块(如TDA1308)。
EMI抑制:高速音频信号容易产生电磁干扰,建议对I2S信号线进行屏蔽处理或靠近地层布线。
5. 备用引脚设计
功能复用建议:14个备用引脚建议标注其可能的复用功能(如ADC、PWM、SPI等),便于后续功能扩展。
上拉/下拉配置:备用引脚建议配置为高阻态或加入弱上拉/下拉电阻,避免悬空导致不确定状态。
三、PCB布局与布线建议
1. 关键信号线布线:
并行总线(如I8080)应尽量短而等长,避免交叉布线。
高速信号线(如QSPI、I2S)应靠近地层布线,减少回路面积。
UART、蓝牙等低速信号线可适当放宽布线要求。
2. 电源与地线处理:
建议使用大面积铺地,降低地阻抗。
数字地与模拟地应单点连接,避免地环路干扰。
电源线应加粗处理,尤其是DC-DC输入输出线。
3. 去耦电容配置:
每个电源入口处建议加入10μF陶瓷电容 + 0.1μF电容进行滤波。
主控芯片电源引脚附近应加0.1μF去耦电容,减少高频噪声。
四、可测试性与可维护性建议
1. 测试点预留:
在关键信号线上预留测试点(Test Point),便于后续示波器测量。
在电源输入、DC-DC输出等位置预留电压测试点。
2. LED指示灯:
建议加入电源指示灯、运行状态灯、通信指示灯等,便于快速判断板子状态。
3. 跳线配置:
若存在多种配置方式(如不同电压输入、功能选择),建议使用跳线帽进行配置,提高灵活性。
4. 丝印与标识:
所有接口、引脚、电源输入等建议清晰标注,提高可读性。
建议在PCB上印制版本号、日期等信息,便于后期追踪。
五、其他建议
1. 散热设计:
若DC-DC模块或主控芯片功耗较高,建议加装散热片或预留散热孔。
2. EMC设计:
若产品需通过EMC认证,建议在输入端加入共模电感与Y电容,提升抗干扰能力。
3. 软件支持:
建议在设计阶段同步考虑驱动开发,尤其是DMA、QSPI、LCD控制器等模块的初始化配置。
总结
整体来看,该AI8051U测试板功能丰富、接口齐全,具备良好的扩展性与实用性。但在电源设计、信号完整性、接口兼容性及可测试性方面仍有一些优化空间。建议在PCB投板前进行一次完整的信号完整性仿真和电源完整性分析,确保设计的稳定性与可靠性。
如有进一步的硬件或软件问题,欢迎继续交流,祝您的项目顺利推进!
—— 国芯人工智能
[本文内容由国芯人工智能辅助生成,仅供参考] 断电按钮连接不正确,请参考官方设计
DebugLab 发表于 2025-10-11 17:48
断电按钮连接不正确,请参考官方设计
您提供的这个元器件比较多,有较简单的方式吗? DebugLab 发表于 2025-10-11 17:48
断电按钮连接不正确,请参考官方设计
我用 “一键双雕” 下载器连接P30、P31,设置了uart1使用p30、p31,用于接收/返回电脑上串口命令,同时我还uart1的P16、P17连接了蓝牙模块的tx、rx引脚,实时保持与蓝牙模块通讯。
我这种方式可行吗?uart1的两对“P30、P31”和“P16、P17” 能同时单独通信吗?
代码如下,目前只写了P30、P31的的配置,并且采用了DMA读取uar1的数据
void UartInit(void)
{
S1_S1 = 0;//UART1 switch to, 00: P3.0 P3.1, 01: P3.6 P3.7, 10: P1.6 P1.7, 11: P4.3 P4.4
S1_S0 = 0;
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xA9; //设置定时初始值
TH1 = 0xFF; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
//ES = 1; //使能串口1中断
//UR1TOCR = 0xc0; //使能超时接收,使能超时中断,超时时钟选择 1:系统时钟0:串口数据位率(波特率)
//UR1TOTL = 0xFF;
//UR1TOTH = 0x0F; //0x5666 = 22118
//UR1TOTE = 0x00; //需要写 UR1TOTE 后,新的TM值才会生效
}
void UartPutc(unsigned char dat)
{
SBUF = dat;
while(TI == 0);
TI = 0;
}
char putchar(char c)
{
UartPutc(c);
return c;
}
//========================================================================
// 函数: void DMA_Config(void)
// 描述: UART DMA 功能配置.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2024-5-6
//========================================================================
void DMA_UART1_Config(void)
{
DMA_UR1T_CFG = 0x80; //bit7 0:Disable Interrupt
DMA_UR1T_STA = 0x00;
DMA_UR1T_AMT = (u8)(UART1_BUF_COT - 1); //设置传输总字节数(低8位):n+1
DMA_UR1T_AMTH = (u8)((UART1_BUF_COT - 1)>>8); //设置传输总字节数(高8位):n+1
DMA_UR1T_TXAH = (u8)((u16)&DmaBuffer >> 8);
DMA_UR1T_TXAL = (u8)((u16)&DmaBuffer);
DMA_UR1T_CR = 0x80; //bit7 1:使能 UART1_DMA, bit6 1:开始 UART1_DMA 自动发送
DMA_UR1R_CFG = 0x80; //bit7 0:Disable Interrupt
DMA_UR1R_STA = 0x00;
DMA_UR1R_AMT = (u8)(UART1_BUF_COT - 1); //设置传输总字节数(低8位):n+1
DMA_UR1R_AMTH = (u8)((UART1_BUF_COT - 1)>>8); //设置传输总字节数(高8位):n+1
DMA_UR1R_RXAH = (u8)((u16)&DmaBuffer >> 8);
DMA_UR1R_RXAL = (u8)((u16)&DmaBuffer);
DMA_UR1R_CR = 0xa1; //bit7 1:使能 UART1_DMA, bit5 1:开始 UART1_DMA 自动接收, bit0 1:清除 FIFO
}
孙晓玉 发表于 2025-11-12 16:04
我用 “一键双雕” 下载器连接P30、P31,设置了uart1使用p30、p31,用于接收/返回电脑上串口命令,同时我 ...
不能同时用
用P_SW1切换
DebugLab 发表于 2025-11-12 18:53
不能同时用
用P_SW1切换
1.如果通过P_SW1来回切换,那么在切换中uart1用的是同一个缓存吗?
2.来回切换会把数据弄丢吧,比如P30P31正在与主机交互,此时连接P16P17的蓝牙模块来了一堆数据,是不是就接不到了呢? 8051U-大学计划实验箱,大国风范 ! V1.1 原理图,参考PCB, 2024/7/21, 立创开源 - SCH/PCB EDA设计技术交流区 国芯人工智能技术交流网站 - AI32位8051交流社区
用这个去修改
孙晓玉 发表于 2025-11-12 20:15
1.如果通过P_SW1来回切换,那么在切换中uart1用的是同一个缓存吗?
2.来回切换会把数据弄丢吧,比如P30P31 ...
是的
页:
[1]