请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BQ79616-Q1 您好!
我有 bq79616EVM 板、我尝试通过 UART 与微控制器连接。
我遵循数据表中给出的步骤、如下所示:
首先、发出2.5ms 的唤醒脉冲、成功唤醒电路板。电流抑制略有增加、板载 LED 亮起。
然后、我将发送自动寻址命令、最后等待电路板的响应。 问题是我没有从电路板上得到任何重新定位。
void * mainThread (void * arg0) { UART_Handle UART; UART_Params uartParams; /*打开 LED 引脚*/ rxPinHandle = PIN_OPEN (&rxPinState、rxPinTable); if (!rxPinHandle){ /*初始化板 LED 引脚时出错*/ while (1); } ledPinHandle = PIN_OPEN (&ledPinState、ledPinTable); if (!ledPinHandle){ /*初始化板 LED 引脚时出错*/ while (1); } //关断 bq79616 PIN_setOutputValue (rxPinHandle、IOID_3、1); 睡眠(1); PIN_setOutputValue (rxPinHandle、IOID_3、0); usleep(36000); PIN_setOutputValue (rxPinHandle、IOID_3、1); 睡眠(1); //唤醒 bq79616 PIN_setOutputValue (rxPinHandle、IOID_3、0); usleep(2500); PIN_setOutputValue (rxPinHandle、IOID_3、1); 睡眠(1); PIN_CLOSE (rxPinHandle); UART_INIT(); UART_PARAMS_INIT (uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_return_full; uartParams.readEcho = UART_ECHO_OFF; uartParams.baudrate = 1000000; UART = UART_OPEN (Board_UART0、uartParams); if (UART == NULL){ /* UART_open()失败*/ while (1){ } } uint8_t recMsg[10]={0}; //原始 msgs uint8_t msg1[]={0xD0、0x03、0x4C、0x00、0xFC、 0x24};//虚拟广播写入 OTP_ECC_TEST=0x00 uint8_t msg2[]={0xD0、0x03、0x09、0x01、0x0F、 0x74};//通过广播写入 CONTROL1 = 0x01启用自动寻址模式 uint8_t msg3[]={0xD0、0x03、0x06、0x00、0xCB、 0x44};//set DIR0_ADDR = 0x00 (基址) uint8_t msg4[]={0xD0、0x03、0x08、0x02、0x4E、 0xE5};//广播写一切作为堆栈器件优先(COMM_CTRL=0x02) uint8_t msg5[]={0x90、0x00、0x03、0x08、0x01、 0xD2、0x1D};//将器件设置为基极和栈顶(COMM_CTRL=0x01) uint8_t msg6[]={0xC0、0x03、0x4C、0x00、0xf8、 0xE4};//虚拟广播读取 OTP_ECC_TEST UART_WRITE (UART、msg1、sizeof (msg1)); usleep (50000); UART_WRITE (UART、msg2、sizeof (msg2)); usleep (50000); UART_WRITE (UART、msg3、sizeof (msg3)); usleep (50000); UART_WRITE (UART、msg4、sizeof (msg4)); usleep (50000); UART_WRITE (UART、msg5、sizeof (msg5)); usleep (50000); UART_WRITE (UART、msg6、sizeof (msg6)); UART_READ (UART、recMsg、1); //如果 bq79616用任何数据回复,请打开 LED PIN_setOutputValue (ledPinHandle、IOID_7、1); while (1); }