本人做毕业设计时,用到了JY-901这个模块用来测量姿态信息,参照IIC写了IIC程序,可是下载到板子上始终无反应,无法读取数据,想问下各位是什么原因,IIC的上拉电阻该如何配置?怎么才能读取JY-901
IIC通信得来的数据?使用use Simulator,或者ST-LINK哪个才能实现在线的硬件仿真,如何才能看到读取的IIC数据呢?
STM32F103的IIC接口电路
IIC连接.jpg (19.16 KB, 下载次数: 14)
IIC连接管脚图
2018-5-24 20:16 上传
主要程序如下:
#include "iic901.h"
/JY-901的IIC驱动程序901iic.c和901iic.h/
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//ÅäÖÃ
B6 PB7 Îa¿a©êä3ö Ë¢DÂÆμÂêÎa10Mhz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//ó|óÃÅäÖÃμ½GPIOB
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11); //
SDA_OUT(); //sdaÏßêä3ö
IIC_SDA=1;
IIC_SCL=1;
}
/**************************êμÏÖoˉêy********************************************
*oˉêyÔ-Dí: void IIC_Start(void)
*1|¡¡¡¡Äü: 2úéúIICÆeê¼DÅoÅ
*******************************************************************************/
void IIC_Start(void)
{
SDA_OUT(); //sdaÏßêä3ö
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(4);
IIC_SCL=0;//ÇˉסI2C×üÏߣ¬×¼±¸·¢Ëí»ò½óêÕêy¾Y
}
/**************************êμÏÖoˉêy********************************************
*oˉêyÔ-Dí: void IIC_Stop(void)
*1|¡¡¡¡Äü: //2úéúIICí£Ö1DÅoÅ
*******************************************************************************/
void IIC_Stop(void)
{
SDA_OUT();//sdaÏßêä3ö
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//·¢ËíI2C×üÏß½áêøDÅoÅ
delay_us(4);
}
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN(); //SDAéèÖÃÎaêäèë
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;//ê±Öóêä3ö0
return 0;
}
/**************************êμÏÖoˉêy********************************************
*oˉêyÔ-Dí: