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.

[参考译文] CCS/BQ76PL455EVM:TMS5.7004万和BQ76PL455EVM的示例代码不工作

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/573654/ccs-bq76pl455evm-sample-code-for-tms57004-and-bq76pl455evm-not-working

部件号:BQ76PL455EVM
主题中讨论的其他部件: BQ76PL455ABQ76PL455A-Q1EM1402EVM

工具/软件:Code Composer Studio

大家好,我正在尝试使用TI提供的示例代码对TMS5.7004万 Launchpad进行编程,以便与BQ76PL455EVM配合使用。 我已按照代码标题中的说明拆下电阻器R8。

提供的示例代码是否能够正常工作,或者是否需要进行某些修改?

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

     您好,Ruby,

    示例代码旨在"按原状态工作",但 不有用。 该代码主要是 配置寄存器的示例。 您是否曾查看 RX线路上是否有任何回至MCU的通信?  

    我刚刚将一个EVM连接到TMS570,并使用 Saleae逻辑分析器验证它是否应按原来的方式上传。 您可以 看到 455 EVM在 唤醒音后在RX线路上接收到一串命令,并在 请求响应时在TX线路上发回数据包:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的响应,我尝试连接它,并使用TDS2000C数字存储示波器连接Rx,TX和唤醒引脚,但未在这些引脚上接收到任何输出。 但是,当我尝试使用GUI时,我会收到针脚上的输出。 您能更详细地告诉我您采取的步骤吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ruby,

    没问题...

    从 bq76PL455EVM...开始

    1. 设置 开关 SW1和 SW2。
      1. SW1 应切换到   文本为"1234"的一侧
      2. SW2应 切 换到"单", 因为您不使用隔离 通信
    2.  bq76PL455A  已从电池组断电。 借助bq76PL455 EVM,我们可以通过获取电源并使用简单的电阻梯模拟 电池的压降来模拟电池电压。 455在堆叠顶部至少需要12伏电压才能工作。 在我们的实验室中,我们  使用16个100欧姆串联电阻器,并将455连接到每个 分接头。 将  电源连接到该电阻分压器应一直工作到~12V。  如果 你 不想进入高电压,我 建议使用类似20V的电压。 我 相信这将会产生一个具有默认设置的电池欠压故障情况。    但这只会导致nFault针脚触发。  

     MCU的时间...

    1. 将MCU管座引脚连接 到 455 EVM的管座J3
      1. sys_main.c  文件的开头详细说明了这些连接。
    2. 假设 项目 已导入CCS并 编译,则使用USB电缆将MCU连接到PC
    3. 在CCS中构建项目
    4. 运行调试器, 然后按Resume (恢复)(F8)。 这 将在 微控制器上运行代码,并允许您逐步浏览代码并点击断点。

    我亦很抱歉,我在较早前的答复 中忘记拆除 MCU的电阻R8。 执行此操作后,答案应如下所示:

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

    再次感谢David。

    是否有任何“有用”代码可用于对TMS5.7004万进行编程以控制bq76PL455EVM?


    此致,

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

    您好,Ruby,

    遗憾的是,我们没有发布任何"即插即用"的代码,主要是出于责任原因。 但是,该示例代码将很好地用作框架代码。 这些命令已经内置,只能由用户决定如何使用它们。

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

    再次感谢David。

    我再次尝试将MCU连接到EVM,并按照您在“MCU时间”之后概述的说明进行操作。
    当我逐步浏览解译为CCS和MCU之间通信的代码时,JTAG LED (D8)将闪烁。
    但是,在逐步执行整个代码之后,MCU上的SCI1TX (D5)或SCI1RX (D6)都不会闪烁,EVM上的唤醒,RX或TX引脚上没有输出。
    在传输和接收数据时,SCI1TX (D5)或SCI1RX (D6)是否应该闪烁?
    J5至J9是否有特定的跳线设置可能会影响此设置?

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

    正确,D5和D6应该有活动。 但是,闪烁的速度将足够快,很 难看到。 验证的最佳方法是 使用逻辑分析器查看数据 传输,或在      bq76PL455EVM RX引脚的下降沿上使用示波器和触发器。

    我正在使用 一  个几乎全新的TMS570启动板 -所有 跳线配置都是从包装盒中获得的全新配置。  唯一的修改是删除R8。 拆卸R8时,您是否损坏   了主板上的部件或  是否制造了任何焊接桥? 我将 验证  该电阻器周围的组件是否未损坏。

    对于455 EVM,  唯一会导致重大故障的跳线是通信模式 SEL开关。  您能否验证 两个开关是否都已移至"单个"位置?

    能否与 我分享您的设置? 也许我 可以在  故障排除过程中帮助找到一些东西。

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

    您好,David:

    当我将两个开关移动到同一位置时,EVM不会打开。 D22指示灯仍然不亮。 我在GUI中尝试了该位置,但GUI未连接“无法打开COM端口”。

    但是,当我将第一个开关从SW2发送到“开”位置时,如果我将第二个开关留在“不开”位置(如下图所示),GUI将连接到EVM。  

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

    这是设置,我按照Sysmain.c中的说明连接了跳线

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

    Ruby,

     两个通信模式选择开关都应处于 “单一”位置,以便正确使用。 在  差分模式下,您仍会看到与开关的通信。

     您使用什么 来为 455 EVM供电? 我在BAT连接器处看不到任何连接

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

    我正在使用EVM平衡36V电池,如下所示。

    既然你说两个开关都需要在一个位置才能正常工作,当我把两个开关都放在那个位置时,GUI不会打开,这是否意味着主板有问题? 当我将“开关1”切换至“打开”位置时,GUI才会识别主板。

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

    我能够重现当两个开关位置都切换到"单个"时GUI未打开的情况-仅当我的电源未打开时才会出现这种情况。 在这种情况下,VIO上的电压为4.95V (正确),没有D22,并且GUI不检测我的主板。

    我是否可以要求您将设置切换为"single (单个)"并在连接电池组的情况下测量VIO测试点以及bat16? 在差分模式下,您是否还能测量它们?


    我还可以要求您仔细检查电池组连接是否正确吗? 由于您使用的是10S电池组,BAT16(s)-BAT10应该短接在一起,因为bq76PL455从电池组顶部获取电源。 如果您可以验证每个BAT测试点处的电压,这可能是良好的健全性检查。

    我并不排除主板已损坏,我们只须进行一些测量以确定
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,David,感谢您的耐心等待。

    我进行了您所描述的测试,将USB更改为TTL电缆。 EVM现在按预期工作。 VIO处的电压在单模模式下为5.1V,在差动模式下为5.34V。 蓄电池电压准确。 BAT16 (s)-BAT10连接在一起。  因此我已经确定董事会正在按其应有的方式工作。

    以下是使用GUI测量单元格的屏幕截图。

    单元格1,6和10故意低于其他单元格的值,以模拟不平衡的情况。

    我还在示波器上捕获RX和TX活动;

    黄色:TX

    蓝色:Rx

    紫色:唤醒

    但是,在将TMS5.7004万与EVM配合使用时,我仍然遇到相同的问题。

    我将EVM置于单模式,按照提供的代码中所述连接跳线。

    我导入了代码并将其加载到主板上。 唤醒引脚在以下屏幕截图中的点高;

    当我浏览代码时,唤醒引脚在 gioInit();函数之后变低;

    当代码运行时,RX和TX引脚上无活动,故障引脚会变高。

    D22点亮

    TX引脚:3.3V (使用示波器稳定)

    RX引脚:3.3V (使用示波器稳定)

    VIO:3.3V

    VDIG 5.34V

    参考电压:2.5V

    V5VA0:5.31V

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


    谢谢你们的详细答复,我几乎所有的问题都得到了肯定的回答。

    可以放心地说EVM工作正常-我们通过GUI看到了这一点。

    仔细检查以确保在RX或TX的下降边缘触发,并且您的范围具有适当的带宽设置。 您的EVM似乎工作正常。

    电压基准出现,D22亮起,这意味着455已正确接收唤醒命令。 请记住-如果您从测试点测量唤醒,则它已通过逆变器,因此它将与MCU发出的信号相反。nFault应为HIGH,表示无故障(非Fault = True), 当发生故障时,和应降低(非故障=假)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,David,我使用的示波器带宽为200 MHz,采样速率为2GS/s
    我将范围设置为在下降边缘触发,同样的事情也会发生。
    我想知道为什么在使用GUI时检测RX和TX活动的范围不是在使用TMS5.7004万时检测的范围。
    我尝试使用TMS打开平衡以查看代码是否有效,但我没有成功。
    能否将您尝试的代码发送到我的电子邮件地址rubyrebz758@gmail.com?
    或者,您是否可以执行代码片段,以便我可以看到EVM与TMS的平衡?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ruby,您好, 我 已经联系了您提供的电子邮件地址,其中 包含一段代码,可以为   所有通道启用单元平衡-您可以参考数据表以查看注册表以及 如果您希望修改它,可以设置哪些位。

    您是否已将TMS引脚SCI1_TX和SCI1_RX引脚连接至高于4.6V的任何电压? 我想知道MCU引脚是否可能损坏。 GIO针脚工作正常,因为它们正在发送唤醒命令。 如果455EVM处于休眠模式,则5AO为~µ A 4.8 ,而其它电压基准将关闭。  

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

    电子邮件使用您提供的地址退回。 您是否可以验证提供的地址是否正确(发生拼写错误...),或者提供替代地址?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是rubyrebz758@gmail.com

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我收到了电子邮件...感谢您的解释
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    欢迎您... 希望他们能提供帮助。开始学习的一个非常简单的方法是制作一个非常简单的课程:

    开机(确保为单端,正确波特率等配置)
    样品池,
    余额,
    关闭电源,

    并从中积累,增加安全功能。

    我仍然很好奇,为什么看不到来自TMS570的UART ...如果您尝试触发TMS570 TX引脚,仍然什么也看不到?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,David:

    我遇到的问题与Ruby所显示的问题相同。 我正在进行您的完整对话。

    您是否还可以将BQ76PLEVM和TMS5.7004万启动板的单元平衡代码发送给我?

    甚至我也会检查一下。

    电子邮件:ritulshah92@gmail.com

    谢谢

    Ritul

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

    您好,David:

    TMS570启动板的BQ76PL455示例代码中有一个命令

    //在单个板上设置电池过压和电池欠压阈值(章节2.2 .6.1)
       nDev_ID = 0;
       nsent = WriteReg (nDev_ID,144,0xD1EC,2,FRMWRT_SGL_NR); //设置OV阈值= 4.1000V
       nsent = WriteReg (nDev_ID,142,0x6148,2,FRMWRT_SGL_NR); //设置UV阈值= 1.9000V

    现在寄存器144和142存储OV和UV阈值。 我们可以在代码 编辑器工作室的何处看到这些寄存器?

    另外,请告诉我应该编写什么代码来启用单元平衡?

    谢谢

    Ritul Shah

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

    Ritul,

    我将在此处共享启用单元平衡的通用代码,有关如何启用平衡的“英语”说明,请参阅数据表中的7.3 Tm7部分。

    使用示例软件中使用的API:
    nsent = WriteReg (0,0x13,0x08,1,FRMWRT_SGL_NR); //配置CBCONFIG寄存器
    nsent = WriteReg (0,0x1E,0x0000,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)
    nsent = WriteReg (0,0x14,0xXXXX,2,FRMWRT_SGL_NR); //在X通道上启用平衡FET


    API被写入WriteReg (设备ID,注册地址,数据字节数,数据包类型)。 在这种情况下,帧类型是不带响应(NR)的单(SGL)写入。 请注意,您可能还必须禁用平衡FET,具体取决于您在CBCONFIG寄存器中启用平衡的时间长度。 请注意,最终用户还负责平衡算法...


    关于您的第二篇帖子,要查看455中的寄存器,您必须使用我们的示例代码中显示的ReadReg函数。 如果在读取数据后设置断点,则可以在代码编辑器工作室中查看变量的更新,因为数据也将存储在MCU中。

    希望能有所帮助,

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

    感谢您的回复。

    我根据我的申请修改了上述API。

    //平衡配置
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,19,0x2C,1,FRMWRT_SGL_NR); //用于结余的常规配置(余额继续2分钟)

    nsent = WriteReg (0,0x1E,0x0015,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)

    //启用平衡FET
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,14,0x003F,2,FRMWRT_SGL_NR); //平衡启用

    当我运行此代码时,无法让平衡启用的LED闪烁(通过GUI完成时,我以前也是如此)。
    那么,平衡是否正在运行?

    请帮帮我。

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

    您使用的是真实的C或模拟器,就像电阻梯?

    如果您使用的是电阻梯,LED将不会亮起。

    您还启用了挤压电阻器:

    nsent = WriteReg (0,0x1E,0x0015,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)

    这将在通道之间连接一个内部5k电阻器,并用于开路检测。 尝试将代码更改为:

    nsent = WriteReg (0,0x1E,0x0005,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    David,

    我正在使用实际的锂离子电池(6个串联)。
    是否需要用第六根芯线将剩余的芯线短路? (目前所有这些都已打开)。
    我尝试了您提供的以下代码。

    nsent = WriteReg (0,0x1E,0x0005,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)

    仍然不起作用。

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

    我能够在您的指导下平衡锂电池。
    我要测量单个电池电压和模块电压。

    根据您的情况,我需要在bFrame中看到它,但在示例代码中,此缓冲区是[132]字节。
    当我观察到它的内部值时,没有值。我正在粘贴代码片段,请将其签出。

    ////////////////////////////

    //唤醒所有设备
    //唤醒音将唤醒任何已关闭的设备,电源关闭将关闭任何设备
    //已唤醒。 对wake和pwrdown执行顺序的最少次数将是的一半
    //主板用于覆盖已唤醒或关闭的主板的最坏情况组合。
    对于(nDev_ID = 0;nDev_ID < TOTALBOARDS;nDev_ID++)

    nsent = WriteReg (nDev_ID,12,0x40,1,FRMWRT_All_NR); // send out broadcast pwrdown命令
    delayms (5);//~5ms
    WakePL455();
    delayms (5);//~5ms
    }

    //掩码客户校验和故障位
    nsent = WriteReg (0107,0x8000,2,FRMWRT_All_NR); //清除所有故障摘要标志

    //清除所有故障
    nsent = WriteReg (0,82,0xFFC0,2,FRMWRT_All_NR); //清除所有故障摘要标志
    nsent = WriteReg (0,81,0x38,1,FRMWRT_All_NR); //清除系统状态寄存器中的故障标志

    //自动寻址所有主板(第1.2 节)
    nsent = WriteReg (0,14,0x19,1,FRMWRT_All_NR); //在所有主板上设置自动地址模式
    nsent = WriteReg (0,12,0x08,1,FRMWRT_All_NR); //在所有主板上输入自动地址模式,此ID的下一个写入将是其地址

    //设置菊花链中所有主板的地址(第1.2 3节)
    对于(nDev_ID = 0;nDev_ID < TOTALBOARDS;nDev_ID++)

    nsent = WriteReg (nDev_ID,10,nDev_ID,1,FRMWRT_All_NR); //向每个板发送地址
    nread = ReadReg (nDev_ID,10,&Dev_id,1,0); // 0ms超时
    }

    // 在堆栈中的所有板上启用所有通信接口(第1.2 .1节)
    nsent = WriteReg (0,16,0x1080,2,FRMWRT_All_NR); //设置通信波特率并启用堆栈中所有板上的所有接口

    /*更改为应用程序中使用的最终波特率(由BAUDRATE在pl455.h中定义设置)。
    *到目前为止,所有通信都是250Kb,与最初完成的COMM_RESET相同
    *启动时将bq76PL455A-Q1 UART重置为250Kb。 */

    //配置AFE (第2.2 .1节)

    //读取设备的序列号
    nDev_ID = 0;
    nread = ReadReg (nDev_ID,198,&SR_num,2,0); // 0ms超时

    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,60,0x00,1,FRMWRT_SGL_NR); //设置0 mux延迟
    nsent = WriteReg (nDev_ID,61,0x00,1,FRMWRT_SGL_NR); //设置0初始延迟

    //配置电压和内部采样周期(第2.2 2节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,62,0xCC,1,FRMWRT_SGL_NR); //设置99.92us ADC采样周期

    //配置过采样率(第2.2 3节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,7,0xFC,1,FRMWRT_SGL_NR); // CMD_OVS_CYCLE = 1;CMD_OVS_HPER = 3;CMD_OVS_GPER = 3;CMD_OVSMP = 4

    //清除并检查故障(第2.2 4节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,81,0x38,1,FRMWRT_SGL_NR); //清除系统状态寄存器中的故障标志
    nsent = WriteReg (nDev_ID,82,0xFFC0,2,FRMWRT_SGL_NR); //清除所有故障摘要标志

    //设备配置
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,14,0xD2,1,FRMWRT_SGL_NR); //配置设备

    //电源配置
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,15,0x80,1,FRMWRT_SGL_NR); //配置电源

    //测试配置
    // nSent = WriteReg (nDev_ID,30,0x0011,2,FRMWRT_SGL_NR); //配置模块电压监控器启用

    //选择要采样的细胞和通道数(章节2.2 .5.1)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,13,0x06,1,FRMWRT_SGL_NR); //将单元格数设置为6
    nsent = WriteReg (nDev_ID,3,0x0.06万C0,4,FRMWRT_SGL_NR); //选择所有单元,AUX通道0和1以及内部数字芯片和内部模拟芯片温度

    //阈值设置

    //在单个板上设置电池过压和电池欠压阈值(章节2.2 .6.1)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,144,0xCCCC,2,FRMWRT_SGL_NR); //设置OV阈值= 4.000V
    nsent = WriteReg (nDev_ID,142,0xB851,2,FRMWRT_SGL_NR); //设置UV阈值= 3.6000V

    //比较器欠压阈值
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,140,0x50,1,FRMWRT_SGL_NR); //设置COMP_UV阈值= 3.000V

    //比较器过压阈值
    nsent = WriteReg (nDev_ID,141,0xA1,1,FRMWRT_SGL_NR); //设置COMP_OV阈值= 4.000V

    //单元平衡

    //平衡配置
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,19,0x28,1,FRMWRT_SGL_NR); //用于平衡的常规配置

    nsent = WriteReg (0,30,0x0005,2,FRMWRT_SGL_NR); //设置BIST配置(禁用挤压电阻器)

    //启用平衡FET
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,20,0x3F,2,FRMWRT_SGL_NR); //平衡启用

    //故障
    //故障摘要
    nread = ReadReg (nDev_ID,82,&FLT_SUMM,2,0); // 0ms超时

    // Fault_UV
    nread = ReadReg (nDev_ID,84,&FLT_UV,2,0); // 0ms超时

    // Fault_OV
    nread = ReadReg (nDev_ID,86,&FLT_OV,2,0); // 0ms超时

    // Fault_Comparator欠压
    nread = ReadReg (nDev_ID,90,&FLT_COMUV,2,0); // 0ms超时

    // Fault_Comparator过压
    nread = ReadReg (nDev_ID,92,&FLT_COMOV,2,0); // 0ms超时

    // Fault_Output控制
    nread = ReadReg (nDev_ID,110,&FLT_OPCTR,2,0); // 0ms超时

    //设备状态
    nread = ReadReg (nDev_ID,110,&FLT_OPCTR,2,0); // 0ms超时

    //自动监控
    //自动监控周期
    nsent = WriteReg (nDev_ID,11,0x04,1,FRMWRT_SGL_NR); //每10毫秒读取一次值

    //自动监听信道选择
    nsent = WriteReg (nDev_ID,51,0x003F0080,4,FRMWRT_SGL_NR); //自动监控频道1-6单元

    //自动监控过采样
    nsent = WriteReg (nDev_ID,55,0xFB,1,FRMWRT_SGL_NR); // Samling Time 12.6 Us和8个样本均值


    //读取板上的采样数据(第3.3 节)
    // 24字节-仍配置为8个AFE通道加2个AUX通道以及内部数字和模拟芯片
    //温度(请参阅2.2 .5.2 部分的代码)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x20,1,FRMWRT_SGL_R); //发送读取采样值命令
    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时

    //将样品请求发送到单个板以进行样品和发送结果(第4.2 节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x01,1,FRMWRT_SGL_NR); // send sync示例命令
    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时

    /* //发送带有嵌入式通道和过采样信息的采样请求(第4.3 .1节)
    nDev_ID = 3;
    nsent = WriteReg (nDev_ID,2,0x0000FF03C000,6,FRMWRT_SGL_NR); //使用channel发送SYNC示例命令
    //嵌入了选择和过样选择
    */
    //从单个板读取以前采样的数据(第4.3 节。2)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x20,1,FRMWRT_SGL_R); //发送读取采样值命令
    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时



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

    Ritul,

    我很高兴 最后 一个帖子有所帮助。

    如果要从底板读取,请尝试 以下两种方法之一:

    //将样品请求发送到单个板以进行样品和发送结果(第4.2 节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x00,1,FRMWRT_SGL_R); // send sync示例命令
    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时

    确保 27个字节足以容纳每个 采样通道的1个数据包标头字节,2个CRC字节和2个数据字节。 此方法将使  pl455在   ADC 转换完成后立即将结果发送到MCU。

     

    或者,您可以执行以下操作:

    //将样品请求发送到单个板以进行样品和发送结果(第4.2 节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x00,1,FRMWRT_SGL_NR); // send sync示例命令

    ,,,,,, 做其他的事情…

    nsent = WriteReg (nDev_ID,2,0x20,1,FRMWRT_SGL_R); //发送读取存储 值 命令

    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时

    这两种方法都应该起作用   ,并且适用于从任何单个板读取。 如果 您 要 不断地轮询电池 电压,您还可以考虑 禁用自动监控 DO信息不会"冲突"并导致混淆

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


    是的。 您必须将所有未使用的VSN引脚短接到使用最多的单元格。

    如果您使用的是EVM,则TOP也将正确连接到BAT16。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    David,

    谢谢。 我已按照说明连接了未使用的导线。
    现在工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     David,

    我正在使用您提供的代码。 我已尝试启用和禁用自动显示器。 我将在bFrame中获取附加值。

    观察到的字节值相当模糊。 我无法解释。

    请帮帮我。

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

    Ritul,

    我很高兴它现在开始工作。  感谢 您的更新。

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

    WaitRespFrame函数之后应该有断点。 尝试在之后添加最小延迟,以便为编译器提供添加断点(或函数后面的代码行)的位置。

    现在,您是在写入寄存器后读取数组内容,而不是在第308行之后存储数据。

    此外,确保值以十六进制显示。 您可以通过右键单击该值并转到我认为的属性来更改该值。 然后您可以将其更改为十六进制。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    戴维先生,

    问题:无法读取6个通道的电池电压。

    我仍然面临同样的问题。 我将向大家简要介绍我所说的一切。

    1.电压采样率
    nsent = WriteReg (nDev_ID,62,0xCC,1,FRMWRT_SGL_NR); //配置电压和内部采样周期:设置99.92us ADC采样周期
    nsent = WriteReg (nDev_ID,7,0xf8,1,FRMWRT_SGL_NR); //配置过采样率:cmd_OVS_cycle =1;CMD_OVS_HPER =3;CMD_OVS_GPER =3;CMD_OVSMP =0

    2.选择6个通道进行采样
    nsent = WriteReg (nDev_ID,13,0x06,1,FRMWRT_SGL_NR); // nchan:将单元格数设置为6

    3.自动监控已关闭
    nsent = WriteReg (nDev_ID,50,0x00,1,FRMWRT_SGL_NR); //自动监控周期:自动监控关闭

    4.请求采样和发送结果
    //将样品请求发送到单个板以进行样品和发送结果(第4.2 节)
    nDev_ID = 0;
    nsent = WriteReg (nDev_ID,2,0x21,1,FRMWRT_SGL_R); // send sync示例命令
    nsent = WaitRespFrame (bFrame,27,0);// 24字节数据+数据包报头+ CRC,0ms超时
    Delayms(1);

    我得到的结果与先前共享的图像相同。 我期望值以连续缓冲字节为单位,但它不是。

    此外,是否有一个特定的缓冲区地址,从该地址开始显示值?

    请帮帮我。

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

    请更改此代码行:
    nsent = WriteReg (nDev_ID,2,0x21,1,FRMWRT_SGL_R); // send sync示例命令

    为此:
    nsent = WriteReg (nDev_ID,2,0x00,1,FRMWRT_SGL_R); // send sync示例命令


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

    通过更改上述代码,我仍然无法获得每个单元所需的电压。
    如果您可以在系统中检查相同的代码,将会更加方便。 此外,我可以将我的代码共享给您以检查结果。
    我在这里呆了很长时间。 请帮帮我。

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

    e2e.ti.com/.../bq76PL455A_2D00_Q1-Example-Code.rarDavid

    我附上了我的BQ76PL455代码。 请在附件中找到。

    甚至EM1402EVM_CODE也在此控制器上运行。 电池电压测量结果与我之前获得的结果相同。 输出电压没有变化。