翻到个51架构的USB外设神器——AT89C5131实用解析(附踩坑指南)

翻到个51架构的USB外设神器——AT89C5131实用解析(附踩坑指南)

最近接了个低成本USB转SPI调试器的小活,不想用STM32大材小用,也不想搞CH340外加MCU的叠BUFF方案,翻库存翻到了早年屯的AT89C5131,好家伙,这货简直是8051体系里做USB低速率外设的宝藏款,今天把整理的核心资料和踩过的坑全分享出来,给还在玩51的朋友省点时间。

文件下载:AT89C5131-S3SIL.pdf

先放个官方核心框图镇楼,省得我自己画了: AT89C5131核心框图

一、底子是51,加的Buff全是实用型

这货本质是增强版80C52内核,纯纯的51开发栈,会写普通51代码的上手零成本,但加的配置全是解决普通51痛点的:

  • 指令周期可选6T/12T:X1模式下最高主频48M,X2模式24M,比传统12T51快2-4倍,跑点轻量协议栈完全不卡
  • 双数据指针:懂的都懂,做数据搬移的时候不用来回切DPTR,代码量和执行效率提升不止一点,我做USB数据收发的时候用这个直接省了几十行代码
  • 内存够够的:256B内部RAM + 1K扩展ERAM,不用外扩RAM就能跑USB HID、 Bulk传输的协议栈,还有1K独立EEPROM存参数,掉电不丢,做校准值、设备ID存储太方便
  • 32K Flash支持ISP:默认自带USB Bootloader,新片拿到手直接插USB就能烧写,不用编程器,小批量打样连烧录器钱都省了

踩坑提醒1:Flash编程别直接写地址,必须调用内置API操作,一开始我没仔细看手册硬写卡了半小时,说多了都是泪。 踩坑提醒2:扩展ERAM要先清AUXR寄存器的EXTRAM位,用MOVX指令访问,别直接用MOV,读出来的全是垃圾数据。

二、杀手锏:集成全速USB控制器,不用外挂PHY

这是这货最香的地方,直接集成了USB1.1/2.0全速PHY,不用外接CH375、PDIUSBD12这类USB芯片,BOM直接少一颗芯片+几颗外围电容电阻,成本降一大截。

端点配置给的也相当厚道:

  • EP0:32B控制端点,默认用来跑USB标准请求
  • EP1~EP3:32B FIFO,做中断传输、小数据收发刚好
  • EP4~EP5:双缓冲64B FIFO,刚好是全速USB Bulk端点的最大包长,我做USB转SPI的时候用EP4做OUT、EP5做IN,双缓冲不用每次发完等中断,传输速度能跑到接近800KB/s,对于51来说完全够用
  • EP6:双缓冲512B FIFO,做U盘、大容量数据传输都能hold住

还自带挂起/唤醒、模拟拔插功能,做DFU固件升级的时候直接软件触发detach,不用用户手动拔插USB线,体验好太多。

踩坑提醒:USB需要48M基准时钟,内部带PLL,不用外接48M晶振,12M/16M/24M晶振都能倍频上去,我用12M晶振的时候把PLLDIV设成0x30就行,一定要等PLLCON寄存器的PLOCK位置1再切时钟,不然USB百分百枚举失败。

三、外设全到离谱,小项目基本不用外扩

除了USB,它的外设配置放到现在做小项目也完全够用,几乎不用额外挂芯片:

1. 定时/PWM类

  • 3个16位标准定时器,还有个5通道PCA模块,支持捕获、比较、高速输出、PWM,我做指示灯调光直接用PCA的PWM输出,不用自己写定时器中断翻IO。
  • 独立硬件看门狗,超时时间50ms~6s可调,防止程序跑飞太好用,调试的时候记得别开,不然动不动就复位能烦死你。

2. 通信类

  • 增强型全双工UART,带帧错误检测和多机地址自动识别,做多机通信不用自己做地址校验,省代码。
  • SPI主从模式都支持,400K TWI(I2C),接个OLED、传感器、Flash完全没问题。

3. 特色实用外设

  • P1口8位键盘中断,支持高低电平触发,做小键盘不用轮询IO,省CPU资源。
  • 4路可编程电流LED驱动,2/6/10mA三档可选,接LED直接把阴极接IO,阳极接VCC就行,不用串限流电阻!我做状态指示灯直接用,省了4颗电阻,BOM又省几毛钱。
  • 34个通用IO,除了复用功能的引脚,剩下的做输入输出完全够用。

4. 低功耗配置

支持空闲、掉电两种低功耗模式,掉电模式最大电流才100uA,做电池供电的小USB设备也能hold住。

四、最后给大伙总结下适用场景

这货特别适合做这类需求:

  1. 低成本USB转串口/SPI/I2C/ GPIO调试工具
  2. USB小键盘、自定义HID控制器
  3. 带USB的小型传感器、指示灯设备
  4. 需要USB DFU升级的低复杂度设备

现在批量拿货也就几块钱,比带USB的32位MCU便宜一半还多,开发栈全是51的,资料也全,对老工程师特别友好,最近做低成本USB外设的朋友可以试试,香到不行。

要是需要寄存器配置例程的可以留个言,我把自己做USB转SPI的工程整理下发出来。

为您推荐

当前非电脑浏览器正常宽度,请使用移动设备访问本站!