主题中讨论的其他器件:BQ79616
我有一块 bq79616EVM 板、我正在尝试通过 UART 将其与微控制器连接。
我遵循数据表中给出的步骤如下:
首先、发送2.5ms 的唤醒脉冲、成功地唤醒电路板。
电流消耗略有增加、板载 LED 亮起。
我将发送自动寻址命令、最后等待电路板的响应。 问题是、我没有从电路板获得任何响应。
/* Initialize for UART_PAL */
UART_Init(&uart_instance, UART_PAL_CONFIG);
uint8_t cmd[] = {0xD0, 0x03, 0x4c, 0x00, 0xFC, 0x24};
uint8_t cmdSetAutoAdd[] = {0xD0, 0x03, 0x09, 0x01, 0x0F, 0x74};
uint8_t cmdSetAdd[] = {0xD0, 0x03, 0x06, 0x00, 0xCB, 0x44};
uint8_t cmdSetStack[] = {0xD0, 0x03, 0x08, 0x02, 0x4e, 0xe5};
uint8_t cmdSetBase[] = {0xD0, 0x03, 0x08, 0x01, 0x0e, 0xe4};
// uint8_t cmd1[] = {0xC0, 0x05, 0x68, 0x10, 0x02, 0x29};
uint8_t cmd1[] = {0xC0, 0x03, 0x4c, 0x1, 0x39, 0x24};
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmd, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmdSetAutoAdd, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmdSetAdd, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmdSetStack, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmdSetBase, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
UART_SendDataBlocking(&uart_instance, (uint8_t *) cmd1, 6, TIMEOUT);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
while(UART_GetTransmitStatus(&uart_instance, &bytesRemaining)== STATUS_BUSY);
/* Send a welcome message */
// UART_SendDataBlocking(&uart_instance, (uint8_t *)welcomeMsg, strlen(welcomeMsg), TIMEOUT);
/* Infinite loop:
* - Receive data from user
* - Echo the received data back
*/
while(1)
{
/* Receive and store data byte by byte until new line character is received,
* or the buffer becomes full (256 characters received)
*/
UART_ReceiveData(&uart_instance, buffer, 1U);
/* Wait for transfer to be completed */
while(UART_GetReceiveStatus(&uart_instance, &bytesRemaining) == STATUS_BUSY);
}
代码卡在 UART_GetReceiveStatus 处、我不接收来自 EVM 板的任何内容、为了安全起见、我使用终端软件测试了此代码、我可以看到波特率是1mbps 并且接收到的数据是正确的此外、我从终端发回数据、我在固件末端接收相同的数据。
我对固件部分是否缺少某些序列或数据包中存在 CRC 错误没有疑问。
代码中是否缺少某些内容? EVM 上的 LED 状态含义是什么? 它处于激活模式右?
