Other Parts Discussed in Thread: BQ79616, BQ79616-Q1
case 0xF0://初始化唤醒脉冲信号管脚
GPIOA_PDDR |= (1 << ePIN_D1); /*MOSI作为输出管脚,PTD1*/
GPIOA_PDDR |= (1 << ePIN_D3); /*BQ79616片选信号,PTD3*/
GPIOA_BASE_PTR->PDOR |= (1 << 27);/*BQ79600片选信号,拉高*/
GPIOA_BASE_PTR->PDOR |= (1 << 25);/*MOSI作为WAKE管脚,拉高*/
sState = 0xF1;
BSPCosStart(COS_ID_CELL_SAMP, 1);//等待1ms
break;
case 0xF1://唤醒脉冲时序
GPIOA_BASE_PTR->PDOR &= ~(1 << 27);/*BQ79600片选信号,拉低*/
BSPDelay(3);//delay2us
GPIOA_BASE_PTR->PDOR &= ~(1 << 25);/*MOSI作为WAKE管脚,拉低*/
BSPDelay(7500);//delay2.75ms
GPIOA_BASE_PTR->PDOR |= (1 << 25);/*MOSI作为WAKE管脚,拉高*/
BSPDelay(3);//delay2us
GPIOA_BASE_PTR->PDOR |= (1 << 27);/*BQ79600片选信号,拉高*/
sState = 0xff;
BSPCosStart(COS_ID_CELL_SAMP, 10);//等待10ms
break;
case 0xFF:
BSPSPIInit(eSPI1); //初始化SPI,准备硬件
sState = 0x00;
BSPCosStart(COS_ID_CELL_SAMP, 2);
break;
//INITIALIZE BQ79616-Q1 STACK
case 0:
SpiWriteReg(0, CONTROL1, 0x20, 1, FRMWRT_SGL_W); //send wake tone to stack devices
sState = 0x19;//下一步自动编址时序
BSPCosStart(COS_ID_CELL_SAMP, 12);//wake tone duration is ~1.6ms per board + 10ms per board for each device to wake up from shutdown = 11.6ms per 616 board
break;
以上图片是我唤醒600的脉冲时序,时间是符合要求的,但是经示波器测量在操作SpiWriteReg(0, CONTROL1, 0x20, 1, FRMWRT_SGL_W); //send wake tone to stack devices之前,RDY就被拉低,按照用户手册上的说明,RDY被拉低,主机向600写操作是无效的,麻烦TI的工程师帮忙看看是什么原因?