头像-144023

donatello

  • 广东省
  • 单片机
  • 计算机网络

个人成就

获得 765 次赞

帮助过2489人

头文件.zip

前几天根据坛友的例程,我调通了基于hal库的l3gd20陀螺仪实验。 先来介绍一下l3gd20,据说该陀螺仪在目前的智能手机上广泛使用,既然广泛使用,那肯定有它自身的优点,我能想到的优点就是封装体积小(这个必须的),成本低(这个可能不一定),灵敏度高(这个看情况)。l3gd20与单片机通信的总线是全双工spi总线+软件片选(即硬件片选脚不启用,而是用另一个gpio来控制片选),另外,还有两个中断控制引脚int1和int2,在本程序中未启用。l3gd20能采集三个轴的加速度,分别是左右(x轴),前后(y轴),自转(z轴),因此能检测板子是平放,向左倾斜,向右倾斜,向前倾斜,向后倾斜或是顺逆时针转动。 初始化l3gd20,首先要初始化板子的spi5接口(pf7~pf9),然后就是对里面的寄存器进行读写操作了。对寄存器的读写要严格遵循spi总线访问寄存器的时序,读寄存器的时序为片选拉低——发送八位地址(第一位一定要置1,即adr&0x80)——发送八位数据的同时接收八位返回数据——延迟10微秒——片选拉高; 而写寄存器的时序为片选拉低————发送八位地址(第一位一定要置1,即adr&0x80)——发送八位数据——延迟10微秒——片选拉高。 首先肯定是读取器件的id寄存器(地址为0x0f),若寄存器的值为0xd4,即说明器件id读取正确,可以进行初始化内部寄存器的操作了。第一个要初始化的寄存器是ctrl_reg1寄存器(地址为0x20),根据表格可得要填入的值为0x3f;然后是设置精度的ctrl_reg4寄存器(地址为0x23),精度默认为250的话,要填入的值为0x00;然后是ctrl_reg2寄存器(地址为0x21),要填入的值也为0x00;最后是启动选项的ctrl_reg5寄存器(地址为0x24),要填入的值为0x10。