si4463芯片使用spi通信,本文章记录配置。
IDE配置
首先配置spi接口和其他的GPIO引脚。
这里我们选择spi2,可以手动点引脚选择或者直接左侧菜单启用spi2,右侧的引脚会自动配好。
IRQ是中断输入,这里配上拉输入,这个是低电平有效。
SEL是片选信号,SDN是芯片使能,都配推挽输出。
RX和TX可以mcu控制,也可以si4463自己控制,这里根据实际来。
这里配置SPI的参数,跟标准库的结构体一样,配好可以自动生成配置程序,很方便。
移入si4463驱动
从供应商那边拿到了一个si4463的demo,先建立一个si4463的目录,然后看下结构。
文件很多,把h文件都打开看了下,实际就这几个来操作si4463.
- 初始化
- 轮询检查tx和rx的状态
- 开启接受
- 检查配置(实际未实现,不管)
- 发送报文
这里的思路,就是把驱动里的引脚配好,比如spi接口,sdn、sel等等。
先看下初始化函数,这里原先是操作SDN这些引脚的电平,然后跳转至定义的位置看下。
原先这里是用的位操作,我们用的hal库,全部替换成HAL接口的GPIO操作。
然后再看下spi的接口,肯定是发消息这块的代码。还是顺着初始化函数看,比如查询partInfo,一路跳转查询,看下spi相关的接口。
一路跳转,终于找到了。
找到了源头,我们使用hal库函数替换这里的spi收发。
最后就是测试,这里如果spi正常,就能读到0x446x的数据。
打个断点,debug过来看下,确实能读到4463的值,证明spi正常。
如果这里读取不正常,最好debug看下问题出在哪里,可能是移植不完全造成,这里要一步步debug下。
错误汇总
这里spi刚开始读到是0xFFFF,问题肯定是SPI没有正常。
排查步骤:
- 首先看下spi是否已经正常开启,正常如果是自动生成的代码,一般是开启了。
- 然后就是看接线是否正确,引脚。(我就是这里的引脚短路了,因为手动飞线的)
- 最后看移植的是否完成,最好把所有跟引脚相关的函数都查看一遍。可以是搜索引脚名的方式,或者一步步的debug,需要花点时间。