This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ79616-Q1:无法与电路板建立 UART 通信

Guru**** 2614265 points
Other Parts Discussed in Thread: BQ79616

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/869476/bq79616-q1-cannot-establish-uart-communication-with-the-board

器件型号: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);
} 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    程序卡在'UART_READ (UART、recMsg、1);'行、这意味着 bq79616不会感应返回的任何数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ajinkya、

    您的自动寻址序列看起来不错、但我无法谈论您的 MCU 的工作原理或代码状态。 您是否有权访问 mySecure SW 文件夹? 如果不是、请请求访问此页面 :http://www.ti.com/product/BQ79616-Q1 、因为此文件夹提供软件支持 和入门示例代码。 您可能需要首先检查此或 GUI 以练习命令、以了解您的 MCU/代码是否存在任何问题。

    此致、

    泰勒