STM321的SPI驱动遇到的一个坑!!】的更多相关文章

最近在做项目要用到FATFS文件驱动和SD卡驱动,SD卡驱动我用的是SPI的通信方式,在挂载文件系统是总是挂在失败了,花了一天时间反复检查,才发现SPI在接收时候卡死: 为了寻找问题的原因,整个人都快疯了,最终我发现一个函数有一个大坑!! 由于我需要在读取或写入SD数据时要把SPI的波特率调大些,就写了下面这个函数,定义了一个结构体变量,因为SPI_InitStructure是局部变量,所以这个变量成员都是随机值,况且我只配置了一个成员,这样一来导致整个SPI的参数都乱了!!! C语言基础真的很…
前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi介绍 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构.支持多slave模式应用,一般仅支持单Master.时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first).SPI接口有2根单向数据线,为…
最近一段时间,在TX1平台的uboot中添加一个spi接口的液晶显示屏的驱动.本来以为是一项简单的工作,因为: 1.相同的驱动在其他平台的uboot中已经添加过了 2.内核中的驱动也是验证可用的,所以硬件上也是没有问题. 但实际进行下来,却花了一个月的时间,因此有些感悟,除了抱怨“巨坑”的Nvidia软件水平之外: 1.Device Tree是一个好东西,可以让人高效.优雅的“配置”驱动. 2.第一条成立的条件是,驱动是正确完备的,Device Tree本身并不能帮助解决驱动中的BUG,某些时候…
平台简介 开发板:TQ2440 (NandFlash:256M  内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdonglin137@163.com 摘要 这篇博客的目的是简要分析两种spi驱动的实现,一种是利用Samsung的S3C2440自带的硬件SPI控制器,另一种是利用Linux内核已经写好的用GPIO模拟SPI时序,实现一个软件SPI控制器.操作的外设是韦东山的SPI视频教程中提供的OLED模块,同时分享一下…
2012-01-07 22:21:29 效果图: 理论学习后,主要是linux中spi子系统设备框架的了解后,主控制器与设备分离的思想,那么我要开始动手了. 1,  make menuconfig添加spi配置 2,platform_driver及platform_device数据结构都有了.于是在mach-tq2440.c中tq2440_devices[]结构添加里         &s3c_device_spi1,//by apple 3,接着开始make zImage. 出错,发现串口信息…
SPI 驱动框架 1. 枚举过程 drivers/spi/spi.c: spi_register_board_info /* 对于每一个spi_master,调用spi_match_master_to_boardinfo */ list_for_each_entry(master, &spi_master_list, list) /* * board_info 里含有 bus_num , 如果某个 spi_master 的 bus_num 跟它一样 * 则创建一个新的 spi_device */…
题外话:面对成功和失败,一个人有没有“冠军之心”,直接影响他的表现. 几周前剖析了Linux SPI 驱动框架,算是明白个所以然,对于这么一个庞大的框架,并不是每一行代码都要自己去敲,因为前人已经把这个框架搭建好了,作为驱动开发者的我们只需要搞清楚哪一部分是需要自己修改或重新编写就OK了. 结合Linux内核面向对象的设计思想,SPI总的设计思路大概是这样的: 第①处:内核中抽象了SPI控制器,让spi_master成为他的象征,他的实例化对象就是与硬生生的SPI控制器对应的,在Linux内核中…
内核版本:3.14.65 CPU:Am335x 1.编译内核: make menuconfig Device Drivers -> <*>SPI support -> <*>McSPI driver for omap <*>User mode SPI device driver support 2.添加设备树 bb_spi0_pins: pinmux_bb_spi0_pins { pinctrl-single,pins = < 0x150 0x30 /…
内核版本:linux2.6.32.2  硬件资源:s3c2440 参考:  韦东山SPI视频教程 内容概括:     1.I2C 驱动框架回顾     2.SPI 框架简单介绍     3.master 驱动框架         3.1 驱动侧         3.2 设备侧 4.SPI 设备驱动框架 4.1 设备册         4.2 驱动侧 5.设备驱动程序实例 1.I2C 驱动框架回顾     在前面学习 I2C 驱动程序的时候我们知道,I2C 驱动框架分为两层,一层是控制器驱动程序…
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和spi device都是通过platform_add_device和spi_register_board_info注册到内核的驱动模式中的.而最新的方式是通过设备树来实现的.以arm为例,设备树文件一般存放在arch/arm/boot/dts下,不同的平台对应不同的文件,以xilinx zynq平台为…