我需要简单的代码来读取和写入 I2C 器件。 MSP430是一个主器件、而其他主器件是硅器件。
我发现、您拥有如此多的外设变体、而我在没有大量消息的情况下无法找到只能正常工作的代码、这让我感到惊讶。
Google 搜索没有帮助。
我发现的第一件事是来自 Jan Richter http://hackaday.com/2014/02/02/a-better-usi-i2c-library-for-the-msp430/的一些代码
它是为不同版本的 MSP430编写的、但我认为它应该几乎是相同的吗? 错误。 它假定一个 USI I2C、 其中 MSP430F5329使用 USCI I2C、它们并不相似、因为我浪费了几天的时间尝试使其正常工作。 它太不同了。
已找到 MSP430 I2C Wiki http://processors.wiki.ti.com/index.php/MSP430_I2C
它说"每个 MSP430产品页面 的软件和工具 下都有代码示例.zip 文件-> 软件"
我查看了那里并找到了一个文件、该文件显示 了 MSP430F532x 代码示例(修订版 F) (ZIP217KB) 164次查看、2017年6月5日
我觉得我很黄金、直到我查看了 I2C 的代码示例。
下面是示例 I2C 中断例程。
// USCI_B0数据 ISR #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__) #pragma vector = USCI_B0_Vector __interrupt void USCI_B0_ISR (void) #Elif defined (__GIC_) void __attribute_(USCI_B0_Vector _)#interrupt USCI_B0_ISR (void )(nuc1u_0_ISR vector)#b0! #endif { switch (__even_in_range (UCB0IV、12)) { case 0:break; //向量0:无中断 情况2:中断; //向量2:ALIFG 情况4:中断; //向量4:NACKIFG 情况6:中断; //向量6:STTIFG 情况8:中断; //向量8:STPIFG 情况10: //向量10:RXIFG RXData = UCB0RXBUF; //获取 RX 数据 _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU 中断; 案例12:中断; //向量12:TXIFG 默认值:break; }
不是很有帮助、也不是我所说的真实示例。
我想我在 SLAA382A 中使用 了 USCI I2C 主设备。
我从 SLAA382A 下载了示例、该示例说明它适用于 USCI I2C 主设备。 但他使用的是"MSP430x261x"、它使用不同的引脚、不同的 USCI (UCB0而不是 UCB1)、并且具有用于 I2C 读取和写入的独立中断。 因此、需要做一些工作才能找到具体器件的问题所在。 我已经浪费了几天的时间走错了路。
为什么每个处理器都没有示例代码? 为什么有这么多不同的 I2C 外设? 获取一个正常工作并继续使用它。 它不像一个新接口。
我应该怎么做? 从何处开始?
我们正在从 ST ARM 处理器切换到 MSP430、由于 ST 上的 I2C 有问题、我们必须在 ST 部件上位 bang I2C。 我的同事在一天之内将位 bang 代码从 ST 部分重写到 MSP430 (基本上他更改了引脚名称和时序延迟环路)、一周内我无法使用 MSP430 I2C 外设使其正常工作。

