TI论坛
直播中

张秀云

7年用户 175经验值
私信 关注
[问答]

LM4F232和MSP430之间的I2C通信SCL和SDA没有波形

大家好!我想尝试一下LM4F232和MSP430g2553之间的I2C通信。M4不断发送数据给430,以下是我的代码:
(1)M4 做主机(代码是修改ivaWareexamplesperipheralsi2c的)
#define SLAVE_ADDRESS 0x48

int

main(void)

[

SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |

                   SYSCTL_XTAL_16MHZ);

SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);       //I2C0 enablePB[3:2]

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

GPIOPinConfigure(GPIO_PB2_I2C0SCL);

GPIOPinConfigure(GPIO_PB3_I2C0SDA);

GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);

HWREG(I2C0_MASTER_BASE + I2C_O_MCR) |= 0x01;

I2CMasterInitExpClk(I2C0_MASTER_BASE, SysCtlClockGet(), false);       // Initialize the I2C0 master module. I2C data transfer rate.

I2CSlaveEnable(I2C0_SLAVE_BASE);     // Set the slave address to SLAVE_ADDRESS.

I2CSlaveInit(I2C0_SLAVE_BASE, SLAVE_ADDRESS);

I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, SLAVE_ADDRESS, false);

while(1)

    [

        I2CMasterDataPut(I2C0_MASTER_BASE, 0x55);

        I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);

        while(!(I2CSlaveStatus(I2C0_SLAVE_BASE) & I2C_SCSR_RREQ))

               [



]
(2)MSP430的代码
#include"msp430g2553.h"

unsignedcharRXData;

voidmain(void)

[

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P1DIR |= BIT0;                                               // P1.0 output

  P1SEL |= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0

  P1SEL2|= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0

   UCB0CTL1 |= UCSWRST;                      // Enable SW reset

  UCB0CTL0 = UCMODE_3 + UCSYNC;         // I2C Slave, synchronous mode

  UCB0I2COA = 0x48;                                       // Own Address is 048h

  UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation

  UCB0I2CIE |= UCSTTIE;                     // Enable STT interrupt

  IE2 |= UCB0TXIE;                          // Enable TX interrupt

//  TXData = 0xff;                            // Used to hold TX data

while (1)

  [

    __bis_SR_register(CPUOFF + GIE);        // Enter LPM0 w/ interrupts



// USCI_B0 State ISR

#pragma vector = USCIAB0TX_VECTOR

__interruptvoidUSCIAB0RX_ISR(void)

[

RXData = UCB0RXBUF;                       // Get RX data

  __bic_SR_register_on_exit(CPUOFF);        // Exit LPM0

]
现在我的情况是SCL和SDA没有波形,全部为低电平(我已将上拉电阻焊上了),我不知道哪里的问题,通信没有成功。请大家帮忙看看!

回帖(1)

王蓓

2018-8-16 07:22:46
 配置I2C SCL 时请调用GPIOPinTypeI2CSCL(unsigned long ulPort, unsigned char ucPins)函数。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分