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.

[参考译文] MSP430FR5739:Driverlib I2C 示例问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/811234/msp430fr5739-driverlib-i2c-example-question

器件型号:MSP430FR5739
主题中讨论的其他器件:FDC1004

您好!  

抱歉、如果之前有人问过这一点、但我找不到具体答案。

首先、我不熟悉 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 i2c 通信

    是否需要使用 FDC1004? 您是否考虑使用我们的 MSP430 FRAM CapTIvate 器件之一、该器件支持电容式触控并可与 CapTIvate 设计中心配合使用?

    MSP430Tm电容式触控感应微控制器

    适用于 MSP430Tm电容式传感 MCU 的 CapTIvateTm设计中心 GUI

    采用 CapTIvateTm技术的 MSP430电容式触控 MCU 培训系列

    此致、

    James

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

    您好、James、感谢您的快速回复。

    我想你可以告诉你,在经过一周的工作后,星期五下午我写了这篇文章。 我完全误解了它发送的是单字节、而不是4字节。

    我目前正在重新设计一个电容式传感器、原来的传感器使用的是 FDC、所以我们有 EVM 板、所以我决定从这开始。

    这是我第一次使用 TI Micro、因此上周学习曲线非常陡峭。 实际上、我在周五末之前从芯片上获得了一些读数。

    感谢您的回复、

    Damien