原因:
耳机检测引脚HP_DET的上拉电阻阻值过大,因硬件设计耳机未插入时HP_DET为高电平,耳机插入后为低电平。当把耳机拔出后HP_DET由低电平转为高电平所需的时间较长(几十秒),所以系统在耳机拔出后一段时间后才检测到拔出事件。
解决:
将耳机检测引脚HP_DET的上拉电阻阻值适当改小,阻值越小,驱动电流越大,电平转换的速度越快。但太小会增加功耗。
注意:
需要注意的一点是,HP_DET对应主控芯片的GPIO设置的模式对上拉电阻的大小是有影响的。如果完全由外部上拉,可将HP_DET设置为内部无上下拉的模式(pcfg_pull_none),若只使用内部上拉,也可以将GPIO设置为内部上拉模式(pcfg_pull_up)。若同时使用内部和外部上拉,上拉电阻的阻值大小就是内外上拉电阻并联后的阻值大小。