小伙伴们大家好, 续上回分解。我们了解了I2C的使用,细心的小伙伴已经发现了,在bitserial这个功能里面还能使用SPI。是滴,bitserial就是用来使用I2C和SPI的,而这两者的使用,大同小异。所以,如果想了解清楚点的,可以到上一篇看看I2C的,这一篇就补充说明一下SPI的使用。 在默认代码使中,是有两个传感器的驱动代码的,分别是加速度传感器adxl362和接近传感器vncl3020。那因为封装等各种原因,客户一般选自己想要的去替换他。我们AITg的QCC系列开发板也集成了几颗传感器,并完成驱动,有兴趣可以点击连接前往购买体验(AITg高通蓝牙开发板),当然您有别的心仪对象,也可以参考默认参考代码去完成驱动。这里小编也以默认参考代码来讲解如何使用SPI驱动。 我们看到adxl362.c文件中的appAccelerometerClientRegister这是为加速度传感器注册的地方,就是给传感器配置使能,这里和上篇的差不多,主要讲bitserial的几个参数 首先模式肯定要选BITSERIAL_MODE_SPI_MASTER ,再是时钟频率,小编亲测时钟频率可到4Mhz,往下的几个配置如果不是特殊的就不用管,但要是是特殊的看一下注释都能懂了。接下一个重要的参数——flags,大家都知道SPI并不是只有一种通讯模式,为了面对不同的通讯模式,不同的信号传输需求,就需要按照枚举的参数去修改这个标志位,多个参数就用 ‘|’ 符号与起来。 再往下就是申请block,设备都是I2C就可以用同一个block,如果一个是I2C,一个是SPI,那就要分开用两个block来使用,按handle来区分就好了。中断注册和响应都和I2C的一样,可回看上一篇。 关于读写也是和I2C一样的,这里不多讲,在这就讲讲另外一个函数BitserialTransfer,这个也是用作读写,和BitserialRead、BitserialWrite不一样,这是一个函数完成读写操作,有点像以前ADK的I2C函数。大家都知道读的时候,是要先写一个寄存器地址,再执行读,默认参考代码就是将这两个动作用BitserialRead和BitserialWrite分别执行,这是在写的时候,用BITSERIAL_FLAG_NO_STOP 这个标志去保持本次通讯不结束,而BitserialTransfer 一次完成这些操作,例如以下这样,看上去就简洁很多。
来源:https://www.wpgdadatong.com/cn/blog/detail?BID=B1761 |
GMT+8, 2024-4-27 08:18 , Processed in 0.085485 second(s), 16 queries , Gzip On, MemCached On.
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.