BOOSTXL-CAPKEYPAD 评估板预装了一个使用 I2C 与外部世界通信的应用。 在哪里可以找到所需协议的文档?
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.
BOOSTXL-CAPKEYPAD 评估板预装了一个使用 I2C 与外部世界通信的应用。 在哪里可以找到所需协议的文档?
您好、Jim、
《CapTIvate 技术指南》、软件一章、 通信模块对此进行了说明。
CapTIvate 软件 API 包含函数说明。
好的、明白。
您有2个选项;一个是遵循 REGISTER_I2C 协议、另一个是创建您自己的协议。
选项1 - REGISTER_I2C 已集成到 CapTIvate 库中、并记录在 软件一章的主机处理器通信部分中。 它提供了与 MSP430进行通信所需的示例。 请注意、在 GUI 中、您必须选择此协议、或者您可以手动编辑 CAPT_UserConfig.h 文件第81行:#define CAPT_interface (__CAPT_REGISTERI2C_interface__)。
您将发现主机可以请求传感器数据、状态和其他数据。 使用此方法的缺点是主机浪费大量的轮询时间来查看是否按下 IFA 键。 效率不是很高、因此您可以轻松添加一个中断、允许 MSP430在主机具有数据时通知主机。 为此,请查看您的 CCS 或 IAR 项目目录并找到 captate>comm>CAPT_CommConfig.h 文件。 在第12行附近、您将看到一些#defines、用于选择您希望 I2C 驱动程序使用的 GPIO。 我认为 BOOSTXL-PKEYPAD 已设置。
由于 REGISTER_I2C 驱动程序不用于激活此中断、因此您需要在用户回调中执行此操作、您需要创建并注册。 此处提供了有关如何执行该操作的信息。 注册回调后、CapTIvate 库将知道在每次测量后自动调用它。 在回调中、只需调用 I2C 从设备驱动程序函数即可激活中断引脚。
空 I2CSlave_setRequestFlag (空)
选项2 -可以使用自定义协议。 由于您已经有一个用户回调来生成中断请求、 因此您需要使用几行代码来读取感兴趣的传感器数据、将其填充到您指定的缓冲区中、然后生成中断。 自定义协议的优点是可以发送所需的任何数据。 如果它只是按下键的值、那么您就会按下。
如何知道按下了哪个按钮? 这就是 CAPT_getDominantButton ()的作用。
要使用 I2C 驱动程序、您必须禁用 CapTIvate GUI 的接口:
//========================================
//修改 CAPT_UserConfig.h,第81行,设置为无
//========================================
#define CAPT_interface (_CAPT_NONE 接口_)
这将防止 I2C 驱动器初始化 REGISTER_I2C 或 REGISTER_BULK 资源。
接下来、您需要向 CAPT_CommConfig.h 添加几行代码 以"重新启用"I2C 驱动程序、以便可以调用 I2C 函数。 请参阅粗体文本。
//========================================
//修改第140行周围的 CAPT_CommConfig.h,如下所示:
//========================================
#if 1.
#define UART__ENABLE (false)
#define I2CSLAVE__ENABLE (真)
#define FUNCHTIONTIME__ENABLE (真)
#elif (CAPT_INTERF=_CAPT_UART_INTERFIT__)
#define UART__ENABLE (真)
#define I2CSLAVE__ENABLE (false)
#define FUNCHTIONTIME__ENABLE (false)
#elif (CAPT_INTERF=_CAPT_BULKI2C_INTERFIT__)
#define UART__ENABLE (false)
#define I2CSLAVE__ENABLE (真)
#define FUNCHTIONTIME__ENABLE (真)
#elif (CAPT_interface=_CAPT_REGISTERI2C_interface__)
#define UART__ENABLE (false)
#define I2CSLAVE__ENABLE (真)
#define FUNCHTIONTIME__ENABLE (真)
#endif
现在、对于代码... 您可以在回调函数中创建缓冲区
//========================================
//创建发送缓冲区
//========================================
uint8_t TXBuffer[16];
在代码初始阶段、在启用 CapTIvate 之前、请执行以下3项操作:
//========================================
//在代码早期执行以下操作:
//========================================
map_CAPT_registerCallback (&keypadSensor、&sensorCallback);
I2CSlave_openPort (&slaveI2c);
I2CSlave_setTransmitBuffer (TXBuffer、sizeof (TXBuffer));//此处使用缓冲区名称
然后创建回调:
//========================================
//回调函数
//========================================
void sensorCallback (TSENSOR* pSensor)
{
//仅在传感器处于触摸状态时检查显性按钮
if (pSensor->bSensorTouch=true)
{
TXBuffer[0]= CAPT_getDominantButton (keypadSensor);
I2CSlave_setRequestFlag();
}
}