提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LMK04828时钟芯片配置历程——SPI接口
- 总结
最近有一个开发板需要去调试,开发板上包含了AD9371和LMK04828时钟芯片,而我的任务是需要将他们都配置起来。
尽管开发板是配有参考例程的,但开发板的参考例程和我的平台不一样,我直接移植过来之后发现跑不了,最后抓取波形一看SPI 配置信息根本没有发出来。所以想一步成功的希望落空了。接下来还是一步一步进行验证了
LMK04828的管脚图
因为这个芯片是通过SPI接口来进行配置的,那么自然的,首先就需要验证SPI接口是不是可以正常通信的,写一个地址,然后回读,看正不正确。只要确定了这里没问题,然后才能进行接下来的工作
从管脚图来看,已经包含了CS SCK,SDIO这三个SPI管脚,因为我们一般来说我们还是用4-WIRE SPI用的比较方便,因此肯定是希望配置成4-WIRE SPI。
找到数据手册中寄存器部分
和很多芯片一样,一般来说第0个地址就是来配置是使用3-Wire SPI还是4-Wire SPI。很明显这里是需要进行配置的
配置成4-WIRE模式后,SDIO作为输入 MOSI信号线。
那么问题来了,哪一根线作为MISO?
这也是SPI是否能够测试成功的关键了,之前我是想当然以为配置了第0个寄存器就可以用了,结果死活回读不出任何数据。折腾了一天,最后还是老老实实看数据手册,终于发现了端倪。
实际上CLKn_SEL1/CLKn_SEL2/Status_LD1/Status_LD2/RESET 这5个管脚全部都可以配置成MISO。
例如0x16E寄存器就是用来控制Status_LD2管脚的功能的,可以配置成SPI Readback
赶紧查一下原理图,发现MISO确实连接在了Status_LD2上,那显然还需要对0x16E寄存器进行配置SPI才能正常回读呀。赶紧配置成0x3B。果然回读成功了,烟消云散。
总结
虽然这么个简单的SPI的接口折腾了一两天才调通,但确实对于一个新器件来说,还是需要去关注它的数据手册,了解清楚一点在进行调试比较好