用过海思3520DV200的人应该都知道吧,由于芯片的年代比较久了,20Dv200的SDK里面是没有标准SPI通讯接口的驱动的,要用SPI通讯的话只能用官方提供的工具SSP_read和write来读写数据,这样非常的不方便,也不好集成在上层的代码中使用,
最近有个项目,需要用到spi,所以就想着能不能自己加一个标准的spi驱动,就像串口一样,通过打开设备节点的方式来操作spi,但是驱动的调试本身难度偏大,一开始也没什么好思路,请教了Goodman大神之后给我提供了一些思路,就尝试着搞了搞,中间遇到了不少问题,大概四五天的样子,终于搞出来了,这次想写出来跟大家分享一下,一个专栏可能写不完啊,这个东西比较多,想分几次给大家写的详细一些,希望大家看到的对你有帮助。
首先给大家提供一个思路啊,自己添加并不代表自己纯手写,重新写一个,这个难度太大,也需要花太多的时间,(当然如果有大神自己可以搞定,那当我没说,估计这样的大神也不会看我写的帖子了吧,哈哈哈哈)我们其实不需要自己纯手写,20Dv200的板子是没有标准spi驱动的,但是别的板子有啊,16A有的,20DV400有的,31D也是有的,我们可以参考别的SDK里的驱动代码,自己添加一下,这就是最关键的思路拉。
照着这个思路的第一步就是比较一下寄存器的差别,找到20Dv200,20Dv400和16A的文档,打开看了一下,如下: 20Dv200:
比较了一下,只有0x024的DMA寄存器20Dv200是没有的,其他都一样,顿时觉得这个事情有搞头,即使不支持DMA通讯至少是可以搞定的吧,于是打开了SDK代码,开始比较了。在20D添加标准SPI驱动详解 ——(二)和(三)中给大家详细讲一下代码怎么去比较以及修改。
https://www.ebaina.com/articles/140000003972
易百纳技术社区内容涵盖机器视觉、音频处理、机器连接、机器感知以及智能终端,是一个多方向的专业性社区,致力于为更多工程师答疑解惑,创造机遇!
|