- 打卡等级:初来乍到
- 打卡总天数: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);
}
|
|