ZHCABH6A January   2022  – October 2022 MSP430FR2533

 

  1.   摘要
  2.   商标
  3. 1引言
  4. 2自感电容式触控的基本知识和原理
  5. 3MSP430FR2533 液位测量应用
    1. 3.1 系统设计
    2. 3.2 硬件设计
    3. 3.3 软件设计
    4. 3.4 测试结果
  6. 4结语
  7. 5参考文献
  8. 6修订历史记录

软件设计

A. 液位高度计算

要在 LCD 上显示液位高度,应用必须测量不同液位高度下的电容值。如Equation6 所示,测量 LTA 和 COUNT,然后计算 C t o u c h .

Equation6. C t o u c h = C t o u c h - C b a s e = α * G a i n ( 1 L T A) + D e l t a -     1 L T A )

通过测量多组数据,图 3-6 显示了液位高度与电容值变化之间的关系。根据拟合结果,液位高度与 C t o u c h 之间的关系为:Y = 341.5X − 34.249。

GUID-E6FC4AC0-AD6B-481A-BFE0-2A3CEA40D021-low.png图 3-6 高度和电容变化之间的对应关系

B. 流程图

该软件设计主要包括三个部分:电容检测、LCD 显示液位高度和 I2C 通信。图 3-7 显示了总体代码设计流程图。

GUID-193FCCD5-FAFE-4481-8B4B-4C302CECADBC-low.png图 3-7 总体代码设计流程图

程序启动时,MCU 对 IO 端口、时钟等进行初始化,然后 LCD 显示“Start”,表示可以进行测量。在短暂的延迟之后,通过 CAPT_appStart() 开始测量,并在 APP_init() 中调用测量函数。APP_init() 函数包括持续扫描每个通道,根据扫描的数据实时计算高度,并通过 LCD 显示。

C. 校准和通信

使用提供的 UART 和 I2C 库函数进行开发时,建议与主机 MCU 通信。首先,GUI 生成的默认代码将完成 BSP_configureMCU() 函数中 UART (eUSCI_A0) 和 I2C (eUSCI_B0) 的 IO 配置和时钟配置。因此,只需配置通信模块并编写通信协议。此设计使用 I2C 与主机通信,主机可以发送命令以执行校准并从从器件接收数据。具体操作步骤如下:

  1. 直接修改 CapTIvate_config→CAPT_UserConfig.h→CAPT_INTERFACE 的定义,默认为 UART,更改为 I2C 通信
  2. 编写自定义帧处理函数,因为 I2C 发送和接收在这里共享一个 32 字节缓冲区,并且该缓冲区中的接收和发送数据段具有 3 字节的偏移量。因此,缓冲区的第四个字节对应于所接收或发送数据的第一个字节。表 3-1 显示了通信协议。
表 3-1 I2C 通信协议
主器件 主机
pBuffer[0]-[3] 无关
pBuffer[4] = 01 需要校准
pBuffer[5] = 01 将高度数据保存到 pBuffer[6]
pBuffer[7] = 01 将代码版本保存到 pBuffer[8]
pBuffer[9] = 01 引导加载程序,软件更新

当 MCU 接收到主机发送的数据时,如果数据的第四位为 0x01,则 MCU 进行校准。如果数据的第五位为 0x01,则高度数据将存储在 pBuffer[6] 中,主机可以读取它。如果第 7 位为 0x01,主机可以从 pBuffer[8] 中读取版本号。如果第 9 位为 0x01,即引导加载程序,则可以更新软件。