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.

[参考译文] MSP432P401R:具有 LSM303DLHC 的 I2C

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/792720/msp432p401r-i2c-with-lsm303dlhc

器件型号:MSP432P401R

您好!

我非常不熟悉使用 I2C 协议、我希望使用 I2C 协议时能有所帮助、以便让数字罗盘/磁力计(LSM303DLHC)与我的 MSP432板协同工作。 我目前正在使用 driverlib 库。 根据 我为该指南针找到的规格表、我应该遵循以下协议:

从我到目前为止收集的内容来看、我在代码中所做的就是:

include "msp.h"
#include "driverlib.h"
#include "stdio.h"
#include "stdbool.h"


const eUSCI_I2C_MasterConfig i2cConfig =
{
EUSCI_B_I2C_CLOCKSOURCE_SMCLK、// SMCLK 时钟源
3000000、// SMCLK = 3MHz
EUSCI_B_I2C_SET_DATA_RATE 100KBPS、//所需的100kHz I2C 时钟
0、//无字节计数器阈值
EUSCI_B_I2C_NO_AUTO_STOP
//无自动停止};

//
* main.c
*/
void main (void)
{
WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;//停止看门狗计时器

//设置 DCO 频率并使用子系统主时钟源:
unsigned int dcoFrequency = 3E+6;
cs_setDCOFrequency (dcoFrequency);
CS_initClockSignal (CS_SMCLK、CS_DCOCLK_select、CS_clock_divider _1);

//初始化
I2C_initMaster (EUSCI_B1_base、&i2cConfig);
I2C_enableModule (eUSCI_B1_base);
I2C_setSlaveAddress (eUSCI_B1_base、0x1E);
I2C_setMode (eUSCI_B1_base、eUSCI_B_I2C_Transmit);

//在开始条件(ST)之后、一个从器件地址被发送
I2C_SendmasterStart (EUSCI_B1_base);
bool 结果= I2C_masterSingleByteWithTimeout (EUSCI_B1_base、0x3C、1000);
if (结果){
printf ("发送字节有效!");
}

在上面的代码中、我通过 Arduino 验证了0x1E 作为从设备的地址。 我最困惑的是"masterSendStart"和"masterSendSingleByteWithTimeout"。 为了从规格表中重新创建协议、我尝试先发送"Start"命令。 然后、我尝试发送 SAD+W 命令。 我在 相关罗盘的规格表中找到了0x3C。  

我原本希望 SendmasterSingleByteWithTimeout 返回"true"、表示来自指南针的确认、但我尚未看到这一点、也不相信我正在正确使用此函数。 一旦我能够开始工作、我计划继续实施协议的其余部分、以便从磁力计读取数据。

关于我的硬件设置、我有一个外部3.3V 电源为罗盘供电(MSP 的公共接地)。 罗盘上的 SDA 引脚将连接到 Port6、Pin4。 SCL 引脚连接到端口6、引脚5。

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

    (1)查看本文档中有关 I2C 的部分, www.ti.com/.../slaa734a.pdf 。 确认上拉电阻已就位。

    (2)从此处提供的一些示例开始:
    dev.ti.com/.../

    dev.ti.com/.../

    (3 )如果需要,API 指南位于 dev.ti.com/.../,实际源代码为:C:\ti\simplelink_msp432p4_sdk_3_10_00_08\sources\ti\devices\msp432p4xx\driverlib\i2c.c。

    此致、
    Chris