工具/软件:TI C/C++编译器
您好、先生、
我使用两个 Tiva 板、一个充当主器件、另一个充当从器件。我尝试将一些字符串从主器件发送到从器件、然后从器件将相同的数据发送回主器件并通过 UART 显示数据、 但我无法发回数据。
当我尝试从主器件向从器件发送数据时、数据通过 UART 正确读取。 但是、当我尝试将相同的数据发回主设备时、它无法正常工作。请帮助我解决问题。
下面给出了主代码、
#define SLAVE_ADDRESS 0x20 //void InitConsole (void); unsigned long k=0; void InitConsole (void); uint32_t n=3、i; char char_tx[]="abc"; CHAR Peripheral_Rx[3]、DATA; int main () { SysCtlClockSet (SYSCTL_SYSDIV_1_SYSCTL_USE_OSC | SYSCTL_8MHZ|SYSCTL_MAIN); InitConsole (); SysCtl_Periph_I2CPeriptl Enable (SysCtl_I2CPeriph_I2CPeriph_while ) ;SysCtlPeripheralCtl0 (SYSC_SYSC_OPTL_OPTH);SysCtlPeripheral0_0 (SYIPB_SYSC_OPTH) while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB)); //配置多路复用和 GPIO 设置以将 SSI 功能输出到引脚 GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2); GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_C0SCL) ;GPIOPIN_PB2_GPIOP2PM_CI_CI2);配置 GPIOPIN_C0SCL GPIOPinConfigure (GPIO_PB3_I2C0SDA); I2CMasterEnable (I2C0_BASE); I2CMasterInitExpClk (I2C0_BASE、SysClockGet ()、false); while (1) { I2CMasterI2C SlaveAddrSet (I2CM0_BASE、SLAVE_ADDRESS、I2CMCK_ADDRESS) ;while (I2CM2CM0_PRIST0)/ PRIM_SEND/ PRIM_TO_PRIM_0_PRIM_0 )=发送完成/ I2CM0/ I2CM0/ I2CM0_PRIM_PRIM_PRIM_TO_PRIM_0_PRIM_END/(PRIM_PRIM_TO_TO_0_0_PRIM_TO_0_0_PRIM_ while (I2CMasterBusy (I2C0_BASE)); } else{ I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_START); //等待 MCU 完成传输。 while (I2CMasterBusy (I2C0_BASE)); I2CMasterSlaveAddrSet (I2C0_BASE、SLAVE_ADDRESS、TRUE); I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_RIVE_START); char_Rx[0]= I2CMasterDataGet (I2CM0 );I2CMaster_BASE (I2CM0);while (I2CM0) UARTCharPut (UART0_BASE、char_Rx[0]); while (char_TX[I + 1]!='\0') for (i=1;i 'j');="" }从器件代码
int main () { char data、char_rx[5]、receive; // uint32_t pui32DataTx; uint32_t n=3、i; //uint32_t pui32DataRx[5]; ///uint32_t ui32Period; SysCtl_SYSDIV_1|SYSCTL_USE_OSC|SYSCTAL_XTAL_8MHZ|SYSCTL_OSC_MAIN);//seting 系统时钟为8MHz ; //将 SysCtl_IPB0_GPIO0_PHI 引脚配置为 SYSCB_PHIL_GPIO0_PHI 引脚 ;//将 SysCtl_GPIOPT_GPIO0_GPIOPT_PHIN (SYSCB_PHIN)引脚配置为 SYSCIP_PHIN_PHIL_PHIL_PHIL_PHIL_PHIL_GPIOPT_PHIN (SYSC0_GPIOPT_GPIOPT_PHIN);// GPIOPinConfigure (GPIO_PB3_I2C0SDA); I2CSlaveAddressSet (I2C0_BASE、0、0x20); I2CSlaveInit (I2C0_BASE、0x20); I2CSlaveEnable (I2C0_BASE); while (1){ // //////将要发送的数据放置在 I2Cslave+寄存器中 、 直到接收到 I2+(I2+);I2Cslave+(I2+= 0);I2+= I2+= I2+(I = I = I = I = I = I = I = I = I = I = I = I = I = I = 0)。 while (!(I2CSlaveStatus (I2C0_BASE)& I2C_SLAVE_ACT_RREQ); I2CSlaveDataPut (I2C0_BASE、CHAR_Rx[i]); while (!(I2CSlaveStatus (I2C0_BASE)& I2C_SLAVE_ACT_TREQ)))))); } }}谢谢、
Alphy