请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F2416 主题中讨论的其他器件:HDC1080
我尝试读取湿度传感器。 TI HDC1080将是一个很好的近似值。 我正在尝试使用中断、但现在会处理任何事情。 我的起点是 Github 上 htruong 的示例代码。
我仍然不了解数据读取流程
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.
我尝试读取湿度传感器。 TI HDC1080将是一个很好的近似值。 我正在尝试使用中断、但现在会处理任何事情。 我的起点是 Github 上 htruong 的示例代码。
我仍然不了解数据读取流程
尊敬的 John:
您可以在 TI Resource Explorer 中将 USCI_B0 I2C 主器件 TX 单字节引用到 MSP430从器件代码示例和其他类似示例。
USCI_B0 I2C 主器件 TX 单字节到 MSP430从器件(MSP430x261x_uscib0_i2c_06.c)
/*-版权所有-、BSD_EX *版权所有(c) 2012、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 * *** * * MSP430代码示例免责声明 * * MSP430代码示例是自包含的低级程序 ,通常*以 高度*简明的方式演示单个外设功能或器件功能。 为此、代码可能依赖于器件的加电默认 值*寄存器值和时钟配置等设置、 并且在组合多个示例中的代码时必须*小心以避免潜在的副作用 *。 另请参阅 www.ti.com/grace 了解 GUI、并参阅 www.ti.com/msp430ware *了解外设配置的 API 函数库方法。 * *--/版权--* //********* // MSP430F26x 演示- USCI_B0 I2C 主器件 TX 单字节到 MSP430从器 件// //说明:此演示通过 I2C 总线连接两个 MSP430。 主 器件//发送到从器件。 这是主代码。 它持续 //传输00h、01h、...、0ffh 并演示如何使用 USCI_B0 TX 中断实现一个发送单字节的 I2C //主发送器。 // ACLK = n/a、MCLK = SMCLK = BRCLK =默认 DCO =~1.045MHz // ***与"MSP430x261x_uscib0_i2c_07.c"***一起使用 /|\/|\ // MSP430F261x/241x 10k MSP430F261x/241x // 从器件 || 主器件 // -------- |||--- // -|XIN P3.1/UCB0SDA|-|--+->|P3.1/UCB0SDA XIN|- // | || | | // -|XOUT || | XOUT|- // | P3.2/UCB.S.|<---- >|P3.2/UCB.S. | // | | | |//// B. Nisarga // Texas Instruments Inc. // 2007年9月 //使用 CCE 生成版本:3.2.0和 IAR Embedded Workbench 版本:3.42A //********* #include unsigned char TXData; unsigned char TXByteCtr; int main (void) { WDTCTL = WDTPW + WDTHOLD; //停止 WDT P3SEL |= 0x06; //将 I2C 引脚分配给 USCI_B0 UCB0CTL1 |= UCSWRST; //启用 SW 复位 UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C 主设备,同步模式 UCB0CTL1 = UCSSEL_2 + UCSWRST; //使用 SMCLK、保持软件复位 UCB0BR0 = 12; // fSCL = SMCLK/12 =~100kHz UCB0BR1 = 0; UCB0I2CSA = 0x48; //从器件地址为048h UCB0CTL1 &=~UCSWRST; //清除 SW 复位,恢复操作 IE2 |= UCB0TXIE; //启用 TX 中断 TXData = 0x01; //保持 TX 数据 、同时(1) { TXByteCtr = 1; //加载 TX 字节计数器 while (UCB0CTL1 & UCTXSTP); //确保发送了停止条件 UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX、启动条件 _bis_SR_register (CPUOFF + GIE); //输入带中断的 LPM0 //保持在 LPM0中直到所有数据 //是 TX TXData++; //递增数据字节 } }-->----------------- // USCIAB0TX_ISR 的结构使其可用于通过 预加载带有字节计数的 TXByteCtr 来发送任何//字节数。 ///---------------------------------- #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__) #pragma vector = USCIAB0TX_Vector __interrupt void USCIAB0TX_ISR (void) #Elif defined (__GNU__) void __attribute__((interrupt (USCIAB0TX_ISR)#vector (void USCIA0TX_ISR)#UCIAB0TX_ISR (void))#defineer_COMPLETE!错误!#UICUICUICUICUICU #endif { if}(TXByteCtr) //检查 TX 字节计数 器{ UCB0TXBUF = TXData; //加载 TX 缓冲区 TXByteCtr --; //减量 TX 字节计数 器} 否则 { UCB0CTL1 |= UCTXSTP; // I2C 停止条件 IFG2 &=~UCB0TXIFG; //清除 USCI_B0 TX int 标志 _BIC_SR_REGISTER_ON_EXIT (CPUOFF); //退出 LPM0 }
此致、
James