用这个布线去,芯片是MPU6050三轴陀螺仪加速度计,很奇怪!
#define delays delay_ms(2) //delays;
//初始化IIC
void IIC_Init(void)
{
RCC->APB2ENR|=1<<3;//先使能外设IO PORTB时钟
GPIOB->CRL&=0X00FFFFFF;//PB6,PB7
GPIOB->CRL|=0X33000000;
}
//产生IIC起始信号
void IIC_Start(void)
{
SDA_OUT(); //sda线输出
IIC_SCL=1;
delays;
IIC_SDA=1;
delays;
IIC_SDA=0;
delays;
}
就是设置那个delay的延时来控制I2C的读取速度,好奇怪的是,在读芯片存放地址的寄存器: WHO_AM_I的时候,DELAY可以取到2US没问题,但是读到数据寄存器时,这次
测的是X轴加速度,竟然 DELAY要弄到2MS才能读出数据,感觉很悲剧,结果试验了一下,一秒钟才出了5个数据左右(用串口打到PC机上扣去串口通讯目测的)。这个小板子是
玩四轴的,感觉有点小郁闷,不知1S打那么点数据够用不,所以在这里请教一下PCB的布线如上图,有什么需要注意的地方。 |