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.

[参考译文] MSP430FR2433:软件 I2C

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1029217/msp430fr2433-software-i2c

器件型号:MSP430FR2433

尊敬的团队:

我是否可以使用  P1.0、P1.1 来实现 软件 I2C?

我使用 P1.2 P1.3 来实现 软件 I2C、它运行良好。

然后 使用与 P1.2 P1.3相同的代码,只需更改引脚(使用 P1.0、P1.1)。 这不能奏效。

请帮助。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "include.h"
void Simulative_I2C_Init(void)
{
P1DIR|= BIT2;
P1DIR|= BIT3;
PM5CTL0 &= ~LOCKLPM5;
SCL_H;
SDA_H;
}
void I2C_Start(void)
{
SDA_H;
SCL_H;
delay_us(10);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef __SIMIIC_H
#define __SIMIIC_H
/******************************************IO******************************************/
#define SDA_IN (P1DIR &= ~ BIT2)
#define SDA_OUT (P1DIR |= BIT2)
#define READ_SDA P1IN & BIT2
#define SDA_H (P1OUT |= BIT2) //p1.2 SDA
#define SDA_L (P1OUT &= ~BIT2)
#define SCL_H (P1OUT |= BIT3) // P1.3 SCL
#define SCL_L (P1OUT &= ~BIT3)
/************************************************************************************/
extern void Simulative_I2C_Init(void);
extern void I2C_Start(void);
extern void I2C_Stop(void);
extern void I2C_Ack(void);
extern void I2C_NoAck(void);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    你(们)好 Susan

     软件 I2C 解决方案中用作 GPIO 的 P1.0、P1.1、P1.2和 P1.3没有区别。

    请考虑使用  MSP430FR243x、MSP430FR253x、MSP430FR263x 代码示例的基本代码 msp430fr243x_p1_01/p1_03来测试 IO 数字输出和输入功能(修订版 E)

    同时、FR2433的 eUSCI_B 支持 I2C 功能。 (P1.0-P1.3)、我认为您可以考虑使用 eUSCI_B 外设。

    谢谢!

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

    I2C 使用开漏输出。 当我想进行位 bang I2C 时、我将输出(P1OUT)设置为零、并更改方向寄存器以更改电平。 使引脚成为输入、让上拉电阻器将其变为高电平、如果我想将其拉至低电平、则使其成为输出。

    但是、在具有硬件支持的部件上、我必须耗尽串行端口、然后才能考虑位拆裂。

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

    如果您使用的是 Launchpad、请不要忘记从 J10和 J11 (LED1/2)上移除跳线。