1. 前言
这篇主要是解决&分析具体的调试遇到的一些问题
2. OTP写蓝牙地址失败-BT_OTP_3P3V_ON和BT_OTP_VDD3P3V引脚
问题:
OTP写蓝牙地址失败。
问题分析:
1.OTP是one time programmable的意思,就是只能写一次到芯片寄存器里。测试的时候就是下载firmware后,做otp的读取。
2. 测试主要采用把mbt脚本放到板子里面执行。写入蓝牙地址后,重启机器,重新读取蓝牙地址,跟设置的不一样,说明写入OTP失败。
3. 把BT_OTP_3P3V_ON拉高后,读取OTP默认是有值的。理论上,如果OTP没有写过,OTP不应该有内容。怀疑芯片OTP被写过,重新找了两块新的板子,把BT_OTP_3P3V_ON拉高后,读取OTP也是默认有值的。
4.Nick查找芯片手册发现有另外一个GPIO信号与OTP有关,BT_OTP_VDD3P3V这个信号表示OTP供电电压,与英飞凌沟通,OTP工作时,需要拉高到3.3V。而与EE沟通,这个引脚一直是断开的。
问题解决:
1. BT_OTP_3P3V_ON与VDDO保持相同电平:1.8v,表示使用OTP。
2. BT_OTP_VDD3P3V,拉高到3.3v,给OTP供电。
3. 芯片UART串口无通信-RTS, CTS影响串口通信
问题:
SOC和蓝牙芯片间串口功能都是好的,功能正常使用。上位机通过蓝牙芯片串口向蓝牙芯片发完HCI_RESET命令得不到响应。
问题分析:
1. 将BT 芯片UART 和8295断开,再接串口工具,上位机通过串口向蓝牙芯片发完HCI_RESET命令得不到响应。
2.跟英飞凌沟通,需要确认TX/RX/CTS/RTS是否连接正确,电平是否匹配。试了各种TX、RX、CTS、RTS和SOC通路都不断开;TX、RX和SOC通路断开,CTS、RTS和SOC通路不断开;TX、RX和SOC通路不断开,CTS、RTS和SOC通路断开;TX、RX、CTS、RTS和SOC通路都断开;仍无通信。这个过程没有思考电平匹配,只是盲目试错。
3.由于VBAT是1.8V,使用串口板电压是3.3V,怀疑是VBAT和串口板电压不匹配导致,换了一个1.8V串口工具,串口仍无通信。用示波器测量串口工具板的TX能抓到波形。测试过程中,还发现一个逻辑错误,UART的四根脚跟串口板不是交叉相连,交叉相连后,串口仍无通信。
4. 量SOC_BT2_RES_N复位信号,发现8295在断开UART后无通信后,会尝试复位重启蓝牙,几次失败后一直拉低reset;直接断电8295电源3V3_HP,SOC_BT2_RES_N复位信号一直被8295引脚拉低,断开8295引脚,手动复位再解复位蓝牙芯片,仍无法下发命令;
5.通过上位机直接给SOC下发指令,发现SOC默认拉高RTS,下发指令过程中,是低电平。说明RTS低电平才有数据通信。
问题解决:
1. BT 芯片UART 必须和8295断开,再接串口工具,否则命令下不进去;
2. UART和8295断开后,8295会主动reset BT芯片,所以需要硬件rework断开reset,或8295将reset控制脚配置成普通GPIO拉高;
3. RTS,CTS会影响串口通信,8295默认拉高了RTS,需要飞线拉低RTS;
4. 串口工具电压需要与芯片VBAT匹配;UART的四根脚跟串口板交叉相连。