基于全志A33 spi从机系统实现
2018-01-07 23:54
288 查看
目前,linux系统是不支持spi从机功能,有个项目,A33 与单片机采用spi高速通讯,考虑到速度,只能设置A33 spi为从机模式。
一:硬件修改
主spi的一个io,连接到从机的一个中断io口:主机选择从机通讯时,这个io为低,从机利用中断可以立即准备好数据
主spi立即发出spi clk信号,与从机通讯。
二:软件修改
分析:1:默认的spi驱动只支持主spi,不支持从spi,驱动的流程上肯定要修改。
2:必须考虑DMA和FIFO传输的不同,特别是DMA部分。查看驱动,由于是主spi的框架,在通讯中是要wait的,通讯后会释放DMA资源,这样是无法用在从机spi系统的。
这是一个关键问题:去掉释放DMA的动作,修改DMA传输,在DMA传输完后再释放DMA资源。
3:由于A33的spi设置为从机,那就必须考虑2个问题:无法预知主机什么时候发起spi通信,如何处理spi主机发起的通讯和android应用层发出的spi控制信息。
第一个问题,用工作队列可以解决,第二问题,用锁可以解决。
4: 全志A33 spi从机配置
看规格书,把init中的spi模式寄存器数值修改为从机。
工作流程:
必须用异步方式传输数据。在init spi时新建一个work,负责spi数据传输。
1:android上层准备好数据,立即下发到spi,驱动立即保存好数据(DMA或FIFO BUF),然后把全局变量gHasSpiData设为1,退出,返回上层成功标识。
2:利用中断,产生一次工作队列的调度,实现异步传输。
3:工作队列的内容:配置好DMA,等待spi主机访问数据。上锁,等传输结束释放资源,解锁。
通过以上修改,linux的spi 从机功能实现。实际测试,系统稳定可靠。
个
一:硬件修改
主spi的一个io,连接到从机的一个中断io口:主机选择从机通讯时,这个io为低,从机利用中断可以立即准备好数据
主spi立即发出spi clk信号,与从机通讯。
二:软件修改
分析:1:默认的spi驱动只支持主spi,不支持从spi,驱动的流程上肯定要修改。
2:必须考虑DMA和FIFO传输的不同,特别是DMA部分。查看驱动,由于是主spi的框架,在通讯中是要wait的,通讯后会释放DMA资源,这样是无法用在从机spi系统的。
这是一个关键问题:去掉释放DMA的动作,修改DMA传输,在DMA传输完后再释放DMA资源。
3:由于A33的spi设置为从机,那就必须考虑2个问题:无法预知主机什么时候发起spi通信,如何处理spi主机发起的通讯和android应用层发出的spi控制信息。
第一个问题,用工作队列可以解决,第二问题,用锁可以解决。
4: 全志A33 spi从机配置
看规格书,把init中的spi模式寄存器数值修改为从机。
工作流程:
必须用异步方式传输数据。在init spi时新建一个work,负责spi数据传输。
1:android上层准备好数据,立即下发到spi,驱动立即保存好数据(DMA或FIFO BUF),然后把全局变量gHasSpiData设为1,退出,返回上层成功标识。
2:利用中断,产生一次工作队列的调度,实现异步传输。
3:工作队列的内容:配置好DMA,等待spi主机访问数据。上锁,等传输结束释放资源,解锁。
通过以上修改,linux的spi 从机功能实现。实际测试,系统稳定可靠。
个
相关文章推荐
- SPI从机双工通信实现-基于Zenq 7000
- 基于LitePal操作数据库的学生管理系统的简单实现
- 基于抽象语法树的Online Judge语义查重系统设计与实现(毕设)
- 基于Mahout实现协同过滤推荐算法的电影推荐系统
- 如何实现基于ssh框架的投票系统的的质量属性
- 基于Flask实现后台权限管理系统 - 导言
- 基于JS代码实现实时显示系统时间
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之案例实现篇(上)
- 【Unity】基于MVC模式的背包系统 UGUI实现
- 第二章 数据备份和恢复技术 --基于mkCDrec的核心网网络运维系统的备份和恢复的研究与实现
- 基于SSH实现员工管理系统登录权限的过滤器与拦截器的综合使用
- 基于Linux的集群系统(三)实现过程之理论先导
- 漫谈权限系统之技术策略以及基于RBAC的实现
- 基于身份验证票据的权限系统的实现
- SpringMVC学习系列之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- 【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统
- 基于CakePHP实现的简单博客系统实例
- Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕
- 基于 角色-功能 的思想实现 角色非平行类应用系统的开发
- 基于RBAC的权限管理系统的实现