问答

汇集网友智慧,解决技术难题

rwf5956

TA的家园币:42  

  • 中颖79F6442目标板TWI通讯测试

    问题:主机发出START指令后,TWICON相应的中断标志位未产生,START发送不成功,主机一直在跑START发送检测,从机一直在等待指令说明:1、相应的寄存器配置CLKCON|=0x08;Delay();CLKCON|=0x04;//时钟TWITOUT=0x02;//打开SCL,SDA上拉电阻TWIBR=0x02;//配置发送波特率,禁止总线超时判断f=fsys/(16+2*CR*TWIBR)TWISTA=0x0;//64分频TWICON=0x40;//ENTWI,禁止高电平超时TWTFREE=0xff;//最大超时配置TWIAMR=0;//关闭TWI地址屏蔽IEN0|=0X80;//使能所有中断允许开关IEN1|=0X01;//使能TWI中断INSCON|=0X40;TWICR|=0X01;//使用默认管脚作为SCL、SDA//LCM功能配置SCL、SDA管脚INSCON&=0XBF;2、代码说明基于官方DEMOCODE主机/*******************************************************************************TWI主站发送START指令*******************************************************************************/bitM_TwiSendStart(){TWICON|=0x20;//TWICON=OX60总线空闲时发送起始条件//TWICON&=0xdf;while(1)//等待TWI中断(?是否初始化需要开启TWI中断允许IEN0IEN1?){if(TWICON&0x08)//TWICONbit3中断标志位=1,需软件复位{if(((TWISTA&0xF8)==0x08)||((TWISTA&0xF8)==0x10)){returnOK;//成功发送开始条件或重复开始条件}else{returnFAIL;}}if(0x02==(0x02&TWICON))//TWICONbit1时钟线高电平超时,需软件复位{TWICON&=0xdf;returnFAIL;//等待中断超时}}}/*******************************************************************************(2)TWI主站发送slave地址+W/R指令*******************************************************************************/UCHARM_TwiSendCmd(UCHARaddr,UCHARcmd){UCHARSlaveAddr;UCHARi=0;if(cmd){SlaveAddr=((addr&0x7f)=250){returnERR;//等待中断超时}}}/*******************************************************************************(