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.
您好!
抱歉、如果之前有人问过这一点、但我找不到具体答案。
首先、我不熟悉 MSP430、我以前只在 ST Arm MPU 上工作了大约6个月。
我尝试使用 I2C 与 FDC1004电容感应芯片进行通信。 我一直在看 Driverlib 示例、有一件事对我来说似乎没有意义。
在示例中、TX 函数有一个参数、如下所示填充 为"transmitData"。 最初、我以为这是您要发送到从设备的数据。 问题是、如何在从站注册表中指定要写入的地址?
EUSCI_B_I2C_masterSendSingleByte (EUSCI_B0_BASE、transmitData);
作为参考、这是该函数的内部
void EUSCI_B_I2C_masterSendSingleByte (uint16_t baseAddress、 uint8_t txData ) { //存储当前 TXIE 状态 uint16_t txieStatus = HWREG16 (baseAddress + OFS_UCBxIE)& UCTXIE; //禁用发送中断使能 HWREG16 (baseAddress + OFS_UCBxIE)&=~(UCTXIE); //发送启动条件。 HWREG16 (baseAddress + OFS_UCBxCTLW0)|= UCTR + UCTXSTT; //轮询发送中断标志。 while (!(HWREG16 (baseAddress + OFS_UCBxIFG)& UCTXIFG)); //发送单字节数据。 HWREG16 (baseAddress + OFS_UCBxTXBUF)= txData; //轮询发送中断标志。 while (!(HWREG16 (baseAddress + OFS_UCBxIFG)& UCTXIFG)); //发送停止条件。 HWREG16 (baseAddress + OFS_UCBxCTLW0)|= UCTXSTP; //在再次启用中断之前清除发送中断标志 HWREG16 (baseAddress + OFS_UCBxIFG)&=~(UCTXIFG); //恢复发送中断使能 HWREG16 (baseAddress + OFS_UCBxIE)|= txieStatus; }
根据这里的另一个问题、在示例中、transmitData 设置为0x01、实际上是要写入的寄存器的指针。 但是、如果是这种情况、那么发送给它的数据是什么?
如果这是一个愚蠢的问题、请道歉。 我可能对 I2C 缺乏了解。
谢谢、
Damien
您好 Damien、
感谢您的详细博文和使用 Syntax荧 光笔-它总是让您更轻松地阅读代码!
如果我理解'eusci_b_i2c_ex4_masterTxSingle.c'代码示例、它只是演示了如何从 I2C 主设备通过一个数据字节发送到 I2C 从设备。 显然、它首先通过定义的从器件地址发送。 I2C 从设备对该数据字节执行的操作可能取决于从设备。
现在、查看 FDC1004数据表中的第8.5.2节、可以看到 FDC1004期望在 R/W 位为低电平的从器件地址字节之后传输的第一个字节为指针值。 之后、您需要为该寄存器发送 MSB 和 LSB 数据。 David 在以下主题中的帖子提供了一些背景信息、说明了数据表中的描述为何看起来有限。
是否需要使用 FDC1004? 您是否考虑使用我们的 MSP430 FRAM CapTIvate 器件之一、该器件支持电容式触控并可与 CapTIvate 设计中心配合使用?
适用于 MSP430电容式传感 MCU 的 CapTIvate
设计中心 GUI
采用 CapTIvate技术的 MSP430电容式触控 MCU 培训系列
此致、
James
您好、James、感谢您的快速回复。
我想你可以告诉你,在经过一周的工作后,星期五下午我写了这篇文章。 我完全误解了它发送的是单字节、而不是4字节。
我目前正在重新设计一个电容式传感器、原来的传感器使用的是 FDC、所以我们有 EVM 板、所以我决定从这开始。
这是我第一次使用 TI Micro、因此上周学习曲线非常陡峭。 实际上、我在周五末之前从芯片上获得了一些读数。
感谢您的回复、
Damien