am335x gpio 模拟 spi 驱动添加
kernel 内 make menuconfig
// make menuconfig
Device Drivers --->
[*] SPI support --->
<*> GPIO-based bitbanging SPI Master // 这个是gpio-spi 的驱动
<*> User mode SPI device driver support // 这个是生成 /dev/spidev*.*的驱动
在板级文件里面添加:
// vim arch/arm/mach-omap2/board-aplex_ECM_5416.c
#define GPIO1_12 GPIO_TO_PIN(1, 12)
#define GPIO1_13 GPIO_TO_PIN(1, 13)
#define GPIO1_14 GPIO_TO_PIN(1, 14)
#define GPIO1_15 GPIO_TO_PIN(1, 15)
#define SPI_GPIO_BUS_NUM 3 // 设置spi 总线编号
static struct spi_gpio_platform_data ecm_5410_gpio_spi_data = {
.sck = GPIO1_12, // 指定clk 的gpio
.mosi = GPIO1_13, // 指定slave input
.miso = GPIO1_14, // 指定 slave output
.num_chipselect = 1, // 指定一共有几个cs
};
static struct platform_device ecm_5410_gpio_spi_device = {
.name = "spi_gpio", // 匹配 spi-gpio.c 里面的驱动名字
.id = SPI_GPIO_BUS_NUM, // 配置 spi 总线编号
.dev = {
.platform_data = &ecm_5410_gpio_spi_data, // 指定配置数据
},
};
// 配置 pin_mux
static struct pinmux_config ecm_5410_gpio_spi_pin_mux[] = {
{"gpmc_ad12.gpio1_12", OMAP_MUX_MODE7 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN},
{"gpmc_ad13.gpio1_13", OMAP_MUX_MODE7 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN},
{"gpmc_ad14.gpio1_14", OMAP_MUX_MODE7 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN},
{"gpmc_ad15.gpio1_15", OMAP_MUX_MODE7 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN},
};
static struct spi_board_info am335x_spi2_slave_info[] = {
{
.modalias = "spidev",
.max_speed_hz = 10000000,
.bus_num = SPI_GPIO_BUS_NUM,
.controller_data = (void *)GPIO1_15, // 设置 cs 总线
.chip_select = 0,
.mode = SPI_MODE_0,
},
};
static void ecm_5410_gpio_spi_init(int evm_id, int profile)
{
setup_pin_mux(ecm_5410_gpio_spi_pin_mux);
// 总线设备注册,先配置到spi-gpio 的总线驱动
platform_device_register(&ecm_5410_gpio_spi_device);
// spi 板级信息注册,生成 /dev/spidev3.0
spi_register_board_info(am335x_spi2_slave_info,
ARRAY_SIZE(am335x_spi2_slave_info));
};
static struct evm_dev_cfg ECM_5412_dev_cfg[] = {
// ... ... 加入板级初始化
{ecm_5410_gpio_spi_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{NULL, 0, 0},
};
am335x gpio 模拟 spi 驱动添加的更多相关文章
- linux SPI驱动——gpio模拟spi驱动(三)
一:首先在我的平台注册platform_device,保证能让spi-gpio.c能执行到probe函数. 1: struct spi_gpio_platform_data { 2: unsigned ...
- linux SPI驱动——简单的gpio模拟SPI驱动测试 (二)
1: /* 2: * Add by xuyonghong for duotin car radio fm 3: * Copyright (C) 2016-5-24 xuyonghong@duotin. ...
- GPIO模拟SPI
上次用gpio模拟i2c理解i2c协议.相同的,我用gpio模拟spi来理解spi协议. 我用的是4线spi,四线各自是片选.时钟.命令/数据.数据. 数据在时钟上升沿传递,数据表示的是数据还是命令由 ...
- gpio模拟i2c驱动
前段时间做项目,需要gpio模拟i2c通信,最后参考了一些资料,然后编写了一个程序.现在发出来,以免以后忘记,也为一些需要的朋友提供参考.不喜勿喷哈. /* 说明:该程序是基于atmel公司的sama ...
- LPC4370使用学习:GPIO的引脚功能使用,和12864OLED模拟I2C驱动
一: 手中有块LPC4370的开发板,因为便宜,所以引脚引出的不多,而且只有基本的底板资源驱动代码和例程. 看着手册和例程看了老半天,写程序写了半天,结果GPIO老是驱动不起来,因为引脚配置寄存器中有 ...
- STM32-24位AD7799驱动之手册代码详解,支持模拟SPI和硬件SPI
1.AD7799介绍 AD7799结构图如下所示: 其中REFIN参考电压建议为2.5V, REFIN电压低于0.1V时,则差分输入ad值就无法检测了,如下图所示: 注意: 如果REG_CONFIG的 ...
- 基于TQ2440的SPI驱动学习(OLED)
平台简介 开发板:TQ2440 (NandFlash:256M 内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...
- OLED的使用-4线SPI驱动
一 .OLED屏 1.OLED屏(七针) 2.OLED电路图 3.0.96'OLED简介 该模块特点: 1.三色可选,模块有两种单色和黄蓝双色两种颜色可选,单色为纯白色和纯蓝色,双 色为黄蓝双色: 2 ...
- linux enc28j60网卡驱动移植(硬件spi和模拟spi)
本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是 ...
随机推荐
- Web Service——CXF+Spring 整合
结合spring框架来实现CXF发布SOAP协议的服务,步骤基本相同,所不同的是的多了一些配置项,步骤如下 1. 服务端 第一步:创建web项目(引入jar包) 第二步:创建SEI接口 import ...
- PHP-二进制文件和文本文件的区别
一.文本文件和二进制文件的定义 计算机上所有文件存储在存储设备上都是二进制的, 所以文本文件和二进制文件的区别并不是物理上的, 而是逻辑上的!简单来说, 文本文件是基于字符编码的文件, 常见的编码有A ...
- 简述Android触摸屏手势识别
很多时候,利用触摸屏的Fling.Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等.在Android ...
- Hadoop命令手册
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html 概述 常规选项 用户命令 archive distcp fs fsc ...
- Redis客户端
1.自带的: Redis-cli 2.redis-desktop-manager-0.7.9.809 是一个图形化客户端 但是不支持集群 **由于linux防火墙默认开启,redis的服务端口63 ...
- Linux内核配置解析 - 概述(基于ARM64架构)
1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?. 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手:从源代码的目录结构入手:从k ...
- 标准I/O库
前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...
- git配置gitignore
一.背景 ...
- js 正则表达式 exec 和 match的使用
match body.match(/\d\.\d\.\d\.\d:\d/g); // 推荐使用exec可以拿到多个数组 exec var a = [ 'PHPSESSID=sglvjui97o18bg ...
- mac 安装android sdk
1.下载sdk http://www.androiddevtools.cn/ 2.解压下载文件到目标文件夹 tar -xzvf android-sdk_r24.4.1-macosx.zip /User ...