请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他器件:TM4C1294NCPDT
我可以传输 I2C Tx (DMAWrite)、并看到缓冲器已被逻辑分析仪发送和应答、但从 I2C Rx (DMARead)接收时出现故障。
请帮助我查看详细信息、下面是 FYI、谢谢。
//主流
uint32_t u32Loop;
for (u32Loop = 0;u32Loop < 32;u32Loop +)
{
}
map_SysCtlPeripheralEnable (sysctl_Periph_GPIOQ);
map_GPIOPinTypeGPIOInput (PACKAGESEL_PIN_BASE、PACKAGESEL_AGPGEL
、GPIOPESPHIN);MAP_AGPGEL 和 GPIOPESPIN_AGPIN_BASE;GPIOPEN_AGESPIN_AGPIN_AGP= GPIOPEN_AGP= GPIOPIN_AGP= GPIOPEN_BASE GPIO_Strength _4mA、GPIO_PIN_TYPE_STD_WPU);
g_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_12MHz |
SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
// GPIO 端口函数 init
PortFunctionInit();
#ifdef debug
//#message "此代码将运行调试模式。"
ConfigureDBGUART();
#else
ConfigureCDCUART();
#endif
debug_print ("ConfigureGPIO\n");
ConfigureGPIO();
I2CDMAInitial();
I2C0_initial (0x41);
gu8TxBuf[0]= 20;
I2C0_DMAWrite (gu8TxBuf、32);
I2C0_DMARead (gu8RxBuf、 32);//此处为硬故障
//
void I2CDMAInitial(void) { SysCtlPeripheralEnable (sysctl_Periph_UDMA); SysCtlPeripheralSleep Enable (sysctl_Periph_UDMA); IntEnable (INT_UDMAERR); uDMAEnable(); uDMAControlBaseSet (pui8ControlTable); 启用(INT_UDMA); uDMAChannelAssign (UDMA_CH1_I2C0TX); uDMAChannelMASTDISABLE (UDMA_CH1_I2C0TX、 UDMA_ATTR_ALTSELECT);uDMA_ATTR_ATTR_USEBURST | UCCTR_HIGH_PRIOR_ENTRY_UCC0_UDMA_UCCR8_UDMA_LD_UDMA_LD_UCCR8_UDMA_LD_UCCR8_UDMA_LD_UCCTR_UCCR_UCC_UTR_UTR_UCCR_UCC_UTR_TR_UCC_TR_UCC_TR_UTR_UTR_TR_UTR_UTR_UTR_UTR_TR_UTR_UTR_TR_TR_UTR_UCC_UTR_TR_UCC_TR_TR_UTR_UCC_0 ;UCC_UCC_TR_TR_TR_TR_TR_UTR_UTR_UTR_UTR_U uDMAChannelControlSet (UDMA_CH3_I2C1TX | UDMA_PRI_SELECT、 UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_4); uDMAChannelAssign (UDMA_CH2_I2RX_UDMA_LDCC_4);uDMA_LDCC_UDMA_LDCC_UCC_4 | UDMA_LDCC_R_UDMA_RESTR_UCC_4 | UDMA_LD_UDMA_RESTR_UDMA_LD_UCCTR_UCC_4 | UDMA_LD_ADC_ADC_ADAP_R_UCC_ADC_ADAP_4 | UDMA_LD_R_UCC_R_UCC_TR_ADC_ADC_ADAP_ADAP_ADAP_ADAP_4 | UCC_LD_LD_ADAP_R_UCC_TR_TR_UCC_ADC_ADAP_ADAP_R_ADAP
void I2C0_DMAWrite (uint8_t * pu8TxBuffer、uint16_t u16Len) { uDMAChannelTransferSet (UDMA_CH1_I2C0TX | UDMA_PRI_SELECT、UDMA_MODE_BASIC、 pu8TxBuffer、(void *)(I2C00_I2C0TX + UDC_BASE) ;UDC26_I2T_I2THRESHO_I2_I2UCAST_L0;UCAST_I2UCAST_L0 (UCAST_I2THRESHOT_UDC_BASE) I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_FIFO_SINGLE_SEND); } void I2C0_DMARead (uint8_t * pu8RxBuffer、uint16_t u16Len) { uDMAChannelTransferSet (UDMA_CH0_I2RX | UDP0_RxBuffer、uint16_t UCC0_RAT_BASIC )}(uTS_UCC0_UCC0_UDC0_RAT_RAT_BASIC)、UCCR0 (u_UCCR0)+ UDCO (u_UCCR0) UCCR0 (u_UDC_UDC_RAT_BASIC)、UCCR0 (u_UDC