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: GPIO1_HI to GPIO4_LO - only temperature analog's read 0x8000 when reading in a separate STACK_READ

Part Number: BQ79616-Q1

Tool/software:

I have an application where I use BQ-79600-Q1 and BQ-79616-Q1 (6 devices). using UART interface. 

After following configuration sluuc56_bq (board bring up), I'm able to read cell voltages and cell temperatures (I'm using first 4 GPIO pins as analog inputs)  in one STACK_READ transaction from VCELL16_HI to GPIO4_LO.. however when I do 2 different STACK_READS, I get the following,

  1. STACK_READ  from: VCELL16_HI to VCELL1_LO (only voltages) ..  I get all correct values 
  2. STACK_READ  from: GPIO1_HI to GPIO4_LO (only temperatures) ..  I get all BAD values with 0x8000

can you please tell me why one transaction works but 2 separate ones do not ?

Thanks.

  • Hi Dorian,

    The values are 0x8000 because GPIO_CONF1-4 have not been configured. Configure these and then start the main ADC for 0x8000 not to appear. Hope this helps!

    Regards,

    David Ray

  • sorry for the delay and thanks for your response

    I'm using GPIO 1-4 as analog inputs (connected to thermistors) .. do you have a design note that provides an example for how to configure and fetch GPIO as analog inputs (no faults/protections). 

    At the moment, I'm able to read values but for some reason from 0x8000 now they are frozen (even applying heat - I'm certain the hardware works) ... 

    let me know the best way to share files ..  I have a logic analyzer data dump that shows all my commands

  • ti-data-dump - Copy.txt
    PK
    �|sY
    ��version2PK�|sY�R��metadata-���0E���	��������q0!�<ꓼXi��^#l���ێ>�;�2��V�,aº:U
    @��E+݁�X��/�>��J(�ULa�g��F���u�4��5��m���4hu�Šm6:�50OR����PK�|sY{��kS��0	logic-1-1��ۖ������ִ����v�T���s�~�r�܄�B)��������w��4=Nٝ����6�<��e���?/��~�����>��9Y2�=��6�������@v��b�=K���{�{�`z	n��ǹ/Gܳ�z2"^�p;;����Uc2���ƹp{�$s�ɠ�t^��o�^�p�8���>�T�G������)9�����������mF�{�����K��O6L�ޜ,�^���q�z�Z���},G�_s�Wr�7W�L�^����\t�t�{��]R~�ͤ2�Q�1�������U�^.
    ���>����V�e������1�T��MTa�ӯ��'��U$�`�;ww�[S��f���=D��A�G��Fa���?{C�U7W��L�����x�j��&Z1zx�a��8Y3��՜��Y�
    ��d��S4����ނ��q������q�ǵV֑lPR��n�6ڂ^!�+�8�l+�8јz���>���ƴ\�s��ۯS��m�)����\���LV���7��b!#9U��f��9��{{��f�!E�O�㛡�����
    x]A\�땰�[.�T	��'�r�1%e���'$��<�����8#��>V� �y��A��)�=���{)�Kq?~yܬ���lo���!\#����ex��R��H��,��0�}3��S��F�_
    4l�1�_b3�S���ee��Z!{%\��Q~�O�v��z�2�ݮ3n�s��Ҙ{�ݮ?�����Ġ{2b�^����*��)b�����Æ��N!/��6����,�;6�ªl��ّ�;��ͺv$'
    ��~L^T�S��>3���S2���ie��y1�{"���}�0�:��5g����#�{E�p@�vf#�S�x�s�^3����ZMdt�}��r����:��N֓Im�q�)��S��y�ى�Go�����heg�Ľ9�痽E���3&��D?g�f�����^t�T��ߙ�}������k%��~��B����x{�s�8���K�>85���K��nm��r��k��W��7����W��g\�K"�s9ez[���])�Bxo-R�V�R)�}x�
    �.�S�+����@Q�~}kUe�ԩzܯ褐Մ��CRw�6��{���[W��Y�7�q�$�Y߈�)�b�N���NU�\����OU�z�}X�8/�ٍH�!�\����<��D���z�=b��qR�7E�Cw���.M����|1��r5����v��Fܛ�C�ы��|nྖǸ�!L%�{�}��2���[9'��q�(��_�:.*d�����9Ľ���
    �o֣��T�v�m3���4��t&Z������U�e�����7��<O�����2��/��Z�=_��n�^���$v�c&�4�{#��uZ�ܛ�`� � ����?Z^\�?e��}8�}a�{���Ls� 
    
    w����Em�p�}�^��������_~����q��\�'jN�2�_��������߿|�ԛ�8��7/3>(Mz������U&h�溇��[��O�&~����&K��2���6��_YD��^�G�
    �5��^�im����|ö8���¼쏩9uHk0ٻ�y����ET&h"��1�k��:=ВC�c�9�,}�1�J���;�J�&o��55g��zg�b�ۣS筯�g�j��C�@~�{�a����y�`p��up�-ip����^|xV��^6/���so77�yo�;%�^>�.��u�.��q�2��9���Q��١��
    ��70��K�o�=�/�^���x@
    /��;,��a�^�az���o`J�2Mr$������,�0�K�J=�O�S�a��)�֎�/ytE'�h��tz�J`�rv�[�D_=�m����{�R�w�2�<���׮u2�%T���]M]��~�8�/vR�;��hgr�7�O�dK�.�P�{��pV�R:�'kzG�����x�\��of��˰oI�Ç0k��Zߒ�v��$�Y�\[����y[����=70Ó{{_֟���>�>�X�^N��i��g@��K�*��v��f\n��yP��{��G���y�|kx�kt5��K��r��ԽL�ĝu��8��r3>�h��޽l�0�Z�^���U=L���ʓ���;!��)ig��Z3x"�0�70����NJ��᳨������#�⨋�-k�;&�PK?
    �|sY
    ����versionPK?�|sY�R����&metadataPK?�|sY{��kS��0	���logic-1-1PK�N

    Here is a copy of my file I used freeware logic analyzer PulseView (rename from txt to sr)

  • Hi Dorian,

    To read analog values from the GPIOs after auto addressing the devices, the following is required:

    1. Each GPIO_CONF register configures certain GPIOs. The GPIOs you want to configure should be configured to ADC only. For example, sending 0x12 to a GPIO_CONF register will set both GPIOs to ADC_only. You can configure any GPIO to whichever setting you would prefer.

    2. Start main ADC by sending 0x05 to 0x311 since the GPIOs are no longer configured as Hi-z, they can now read something else besides 0x8000.

    3. Read GPIOx_Hi/Lo registers to receive GPIO data.

    Regards,

    David Ray