主题中讨论的其他器件:TMS570LS1224、 BQ79616、 USB2ANY
工具与软件:
这种架构基于作为 MCU 的 TMS570LS1224、与 BQ79600进行通信。 我使用官方提供的 SPI 示例代码进行测试、但发现无法成功唤醒 BQ79600。
- J10:1-2
- J11:1-2
- J12:2-3
- J6:1-2
- J1:2-3
- J3:2-3
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.
工具与软件:
这种架构基于作为 MCU 的 TMS570LS1224、与 BQ79600进行通信。 我使用官方提供的 SPI 示例代码进行测试、但发现无法成功唤醒 BQ79600。
您好!
使用 USB2ANY 可以看到您可以成功唤醒器件、然后进行自动寻址。 不过、一旦开始轮询、就没有通信发生?
以下是自动寻址的步骤、确保正确遵循这些步骤:
|
61x 设备 |
|
虚拟将0x00从0x343写入0x34A |
|
广播将0x01写入0x309以启用 AA 序列 |
|
广播写入0x00、0x01、0x02、0x03等、直到所有器件(包括基址)都具有 ID (北向) |
|
广播将0x02写入0x308以将器件设置为堆栈(基址将忽略)。 |
|
单个器件写入最后一个器件:0x03至0x308、以设置为栈顶 |
|
验证、堆栈读取0x343至0x34A |
|
验证、堆栈读取0x306 |
|
验证、单一开发读取600 (基址) 0x2001以验证0x14 |
此致!
Zachary
我只能实现以下代码行:
0x00从地址0x343到的虚拟写入0x34A。 0x010x309以启用 AA 序列。 0x00、0x01、、0x020x03等 直到所有器件(包括基座)都具有 ID (北向)。 0x020x308以将器件设置为堆栈(基极将忽略此内容)。 0x030x308、以将其设置为栈顶。 但是、当我执行READ操作时、程序会卡在以下循环中:
void delayus (uint16 us){
如果(us =0)
返回;
否则{
//更改中断比较值(中断周期)
//设置比较0值。
rtiREG1->CMP[0U].COMPx = 10 * us;//每微秒10个时钟周期、因此乘以10
//设置更新比较0值。
rtiREG1->CMP[0U].UDCPx = 10 * us;
//启用我们设置的期间的通知
rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
//启动计数器
rtiStartCounter (rtiCOUNTER_BLOCK0);
//在循环中等待、直到中断发生(在我们设置的周期之后发生)
//发生中断时、RTI_NOTIFICATION 会在该中断中设置为1
//转至 notification.c -> rtiNotification ()以查看 RTI_TIMEOUT 设置为1的位置
while (RTI_TIMEOUT =0);
//将变量重置为0、以便下次我们进行延迟
RTI_TIMEOUT = 0;
//禁用中断通知
rtiDisableNotification (rtiNOTIFICATION_COMPARE0);
//停止计数器
rtiStopCounter (rtiCOUNTER_BLOCK0);
//在下次我们做延迟时重置计数器
rtiResetCounter (rtiCOUNTER_BLOCK0);
}
}
程序专门卡在while (RTI_TIMEOUT == 0);循环中。
我还注意到我的 TMS570LS1224偶尔会卡在函数中。 它会在循环中特别停止。 delayuswhile (RTI_TIMEOUT == 0);
这个问题似乎只是间歇性出现、我不确定它是否与 RTI (实时中断)的配置或中断通知的处理方式有关。
这可能是由以下原因造成的:
如果您对如何调试或解决此问题有任何见解、请告诉我。