| 
				打卡等级:初来乍到打卡总天数:5最近打卡:2025-03-26 10:21:37  已绑定手机注册会员 
 
 
	积分86 
 | 
 
| 请教一下各位大佬,我想使用全志t113与32g8k64进行iic通信,t113作为iic主机,stc32g8k64作为iic从机,但是通信没有成功。 
 目前看来好像是iic波特率不匹配的问题,于是我先是查看了t113的iic波特率是400khz,然后再查找stc芯片的iic波特率是多少,但是没有找到。
 
 我是使用官方的《DMA-I2C从机中断模式与IO口模拟I2C主机进行自发自收》例程然后修改的iic从机代码,在代码中我没有找到iic波特率相关配置,然后翻数据手册也没有找到相关寄存器配置,不知道是不是我看漏了,想问问各位大佬iic波特率怎么看,怎么配置。
 
 
 以下是例程中的一些iiic配置代码
 
 void I2C_config(void)
 {
 P_SW2 = (P_SW2 & ~(3<<4)) | (1<<4);     //IO口切换. 0: P1.4 P1.5, 1: P2.4 P2.5, 3: P3.3 P3.2
 
 I2CCFG = 0x80;                          //使能I2C从机模式
 I2CSLADR = 0x5a;                        //设置从机设备地址为5A
 I2CSLST = 0x00;
 I2CSLCR = ESTAI | ERXI | ETXI | ESTOI;  //使能从机模式中断
 }
 
 
 
 void DMA_Config(void)
 {
 DMA_I2CT_STA = 0x00;
 DMA_I2CT_CFG = 0x80;                //bit7 1:Enable Interrupt
 DMA_I2CT_AMT = 0xff;                //设置传输总字节数(低8位):n+1
 DMA_I2CT_AMTH = 0x00;                //设置传输总字节数(高8位):n+1
 DMA_I2CT_TXAH = (u8)((u16)&DmaBuffer >> 8);        //I2C发送数据存储地址
 DMA_I2CT_TXAL = (u8)((u16)&DmaBuffer);
 DMA_I2CT_CR = 0x80;                //bit7 1:使能 I2CT_DMA, bit6 1:开始 I2CT_DMA
 
 DMA_I2CR_STA = 0x00;
 DMA_I2CR_CFG = 0x80;                //bit7 1:Enable Interrupt
 DMA_I2CR_AMT = 0xff;                //设置传输总字节数(低8位):n+1
 DMA_I2CR_AMTH = 0x00;                //设置传输总字节数(高8位):n+1
 DMA_I2CR_RXAH = (u8)((u16)&DmaBuffer >> 8);        //I2C接收数据存储地址
 DMA_I2CR_RXAL = (u8)((u16)&DmaBuffer);
 DMA_I2CR_CR = 0x81;                //bit7 1:使能 I2CT_DMA, bit5 1:开始 I2CT_DMA, bit0 1:清除 FIFO
 
 DMA_I2C_ST1 = 0xff;                //设置需要传输字节数(低8位):n+1
 DMA_I2C_ST2 = 0x00;                //设置需要传输字节数(高8位):n+1
 }
 
 
 
 void I2C_Delay(void) //for normal MCS51, delay (2 * dly + 4) T, for STC12Cxxxx delay (4 * dly + 10) T
 {
 u16  dly;
 dly = MAIN_Fosc / 2000000UL;        //计算每次延时大约为5微秒
 while (--dly);
 }
 
 
 
 | 
 |