Atlas7平台使用E52241芯片无法烧录
问题:Atlas7平台使用埃尔莫斯的E52241 USB充电芯片后导致UMS无法挂载烧录
原因:E52241芯片USB通路存在switch开关,默认情况下是断开状态
解决方法:在uboot阶段通过IIC配置寄存器来合上switch开关
注:switch开关的设计是为了USB通讯数据保护,E52241芯片检测到设备插入后会自动合上dataswitch。而ums的烧录模式,SOC是作为device,PC作为Host,E52241芯片不会检测设备的插入,不会自动合上switch开关,需要IIC进行配置。
需求:在Uboot阶段实现IIC通讯
问题:CSR原生代码的API使用无法通讯,也无法进一步调试
原因:CSR原生代码与datasheet说明不符合,且datasheet不开放IIC控制器部分的配置操作
解决方法:自己实现gpio模拟IIC
问题:gpio模拟IIC,热重启车机后可以配置成功,冷启动唤醒E52241配置失败
原因:E52241芯片工作状态不符合datasheet中的说明,且需要进行额外配置
解决方法:冷启动时,需要将芯片配置到RUN模式,让VBUS有输出,再进入到standby模式下配置
Ctrl_data 0x01
SetupBC12_data 0x0A
SetupSMPS_data 0x00 0x5C
对比冷重启时VDD=3.3V standby模式和VDD=0V sleep模式时的波形:
VDD=0V
VDD=3.3V
standby模式下SDA波形上存在下拉,芯片是有ack回应的。进一步对比热重启uboot中读取的波形:
可以发现信号波形是没什么区别的,但是SDA线上的数据不一样。最后排查到冷启动时配置的寄存器不对。
PS:
uboot中mw命令:
en-H: mw 0x13300004 0x60 4
en-L: mw 0x13300004 0x20 4