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.

BQ79631-Q1: BQ79631-Q1 通讯问题

Part Number: BQ79631-Q1

尊敬的技术人员:您好!

        现目前我使用的BQ79631-Q1与单片机通信,从机只有一个该设备。通讯采用的是串口,单片机输出的串口波特率为1M、采用的是8-N-1的协议。使用的是自己画的板,各方面供电都正常

        现目前的情况是:

         我在程序中的初始化代码里首先将MCU侧的TX引脚拉低了2.5ms(WAKE_PING),随后延时了11ms,随后按照软件参考指南进行了一遍自动寻址(广播写和广播读)的步骤在每次封装通信帧(

WriteReg 函数)之后延时了1ms(想法是等待芯片稳定)),接着就发送了配置ADC_CTRL相关的命令帧。

在主函数while循环中一直发送: 1、写REF的启用TSREF LDO输出的功能,【90 00 03 0A 01 D3 7D】

                                                            2、延时100ms,

                                                             3、读REF的启用TSREF LDO输出的功能,[80 00 03 0A 01 12 8E ]

。但输出的从设备(BQ79631)的TX无数据,TSREF引脚出的电压值为0;

我的问题是:

    1、判断芯片是否进入到ACTIVE MODE 就是根据AVCC和DVCC的电平来确认吗?

   2、唤醒序列是否在初始化的时候给一次就可以了?现目前每次主循环中的每次发送写和读之前都给一个WAKE_PING,查询到AVDD和CVDD的值都为5V的高电平。但如果没有持续给,电平值为0

   3、如果只使用一个设备,我是否可以忽略自动寻址的步骤,如果不能忽略,那应该广播读写还是用单器件读写指令?

4、如果只使用一个设备,它的默认器件地址是0x00吗?

5、请问这个流程是一个完整的通讯流程吗?(在每次发送读写命令前都发送一个WAKE_PING并延时1ms的时间)

5、在与它通信中,我是否遗漏了什么细节吗?比如说MCU发出的信号,如何来判断它是否接收到了我的讯号并进行了响应。

                                                                                                                                 期待您的答复,

                                                                                                                                       感谢!

  • Hi,

    To determine whether the chip has entered ACTIVE MODE, is it based on the levels of AVCC and DVCC?

    Yes, this can be used to determine.

    Is it enough to give the wake-up sequence once during initialization? Currently, a WAKE_PING is given before each write and read in the main loop, and the values ​​of AVDD and CVDD are found to be a high level of 5V. But if there is no continuous supply, the level value is 0

    A wake ping is not needed before each write and read unless you are entering shutdown in between as well. 

    If I only use one device, can I ignore the automatic addressing step? If I can't ignore it, should I broadcast the read and write instructions or use a single device read and write command?

    I recommend the single device read. If you use a broadcast, it may proporage the command through the COMMH and COMML pins as well, using up more power than needed. 

    You may need to also still tell the device that it is not a stack device and is a base device. I personally still autoaddress to ensure this.

    If only one device is used, is its default device address 0x00?

    It should be.

    Is this process a complete communication process? (Send a WAKE_PING and delay 1ms before sending each read and write command)

    As previously mentioned, the wake ping is not necessary if the device is not in shutdown or sleep.

    Did I miss any details in communicating with it? For example, for the signal sent by the MCU, how to determine whether it has received my signal and responded.

    You've done a very thorough job of the details of communicating. I think this should be good. 

    . However, the TX of the output slave device (BQ79631) has no data, and the voltage value from the TSREF pin is 0;

    This definitely sounds like it could be that the device is not awake. I'd recommend the autoaddress and see if that works.

    Best Regards,

    Anthony Pham