SPI驱动之南瑞NRSEC3000加密芯片驱动开发总结

序:

    这是笔者第一次做SPI接口的驱动,由于对SPI接口的不熟悉,再加上遇到主从设备的SPI接口有一定的差异,导致被坑了很久。当然,这次驱动开发过程中不仅在技术上有所收获,更重要的收获是,懂得了在驱动开发中遇到问题后怎样有效的处理。下面将从开发流程、配置SPI控制器相关须知、用户空间SPI驱动、Linux设备模型与platform总线(虚拟“平台”总线)、Linux SPI驱动框架5方面做总结。如果不使用用户空间驱动的方式,只需了解前两方面即可。由于时间仓促加之本人水平有限,文中可能存在不妥之处,还请广大读者朋友与之交流指正。

时间地点:2017.7.7于成都

一、开发流程

1.确认从设备完好。如果有测试程序能测试从设备相应功能,是最好的确认方法,不仅能测试设备是否完好,还能得到设备工作数据,比如获取加密芯片的版本号,得到的数据对以后的开发有很重要的对比意义。

2.确认主设备提供给从设备的供电是否正常。首先测量供电电压是否是从设备所接受范围(过低工作可能不正常,过高可能会烧坏从设备)

3.确认主设备SPI接口引脚是否正常。要先把复用功能的IO引脚功能选择成SPI(可以自己配置寄存器选择复用功能,但推荐通过板级代码配置)。将主从设备进行连接,如果有现成的SPI驱动,可以直接进行测试主设备SPI引脚是否有波形输出,确认输出是否正常。如果没有现成驱动,可以选择用户空间驱动写一个测试程序(其实一般内核都提供有各种驱动的测试程序,在内核目录的Documentation目录下)。可以用测试程序随意发些数据,用示波器看看各引脚有没有相应的波形。

4.选择用户空间驱动或者内核空间驱动(自己配置寄存器)进行开发。

二、配置SPI控制器相关须知

    1.SPI(SerialPeripheral Interface)接口特点:SPI首先由Motorola公司提出并使用,现在标准的SPI,四线式,全双工,同步的串行通信总线。标准的SPI包含SSn(片选线)、SCLK(时钟线)、MOSI(主出从入线)、MISO(主入从出线)四根线。其中名称在不同的地方可以不同,如SSn可以叫CS、CSB等,MOSI可以叫SDO ,MISO可以叫SDI。在有些实际应用中可能将标准的SPI进行简化或者扩展,例如如果不需要使用片选可以去掉,不需要在同一个时钟周期内进行发送和接收的情况可以使用半双工,需要将位宽从标准的1位扩展到多位可以采用并行(就需要更多的数据线)。

    2.S

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值