0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术EM9280 Linux SPI驱动简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-16 09:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、简述

SPI(Synchronous Peripheral Interface)是一种同步串行数据通讯总线接口,常用于连接ADCs、EPROMs、Sensors或者是其他一些微控制器,SPI具有两种工作模式:master和slave模式,其中master模式提供时钟信号

EM9280提供的SPI驱动支持master模式,该SPI接口为四线制SPI,包括:时钟CLK、数据MISO (master in, slave out)、数据 MOSI (master out, slave in)、片选CS。SPI管脚和GPIO28-GPIO31复用。具体的管脚定义请参见《EM9280工控主板数据手册》相关章节。

本文将介绍EM9280如何实现SPI设备驱动(spi-dev)以及如何使用spi-dev。

2、Linux内核配置

内核配置中增加以下选项(make menuconfig):

Device Drivers ---> SPI
Device Drivers ---> SPI ---> Freescale MXS SPI/SSP Controller
Device Drivers ---> SPI ---> User mode SPI device driver support

增加对SPI板卡一级的支持,在arch/arm/mach-mx28/board-em9280.c定义:

static struct spi_board_info spi_board_info[] __initdata = {
{
.modalias = 'spidev',
.chip_select = 0,
.max_speed_hz = 12 * 1000 * 1000,
.bus_num = 1,
.mode = SPI_MODE_3,
},
};

spi_register_board_info( spi_board_info, ARRAY_SIZE(spi_board_info)); )); 注册spi_board_info。这个代码会把spi_board_info注册要链表board_list上, 然后spi_master的注册会在spi_register_board_info之后,spi_master注册的过程中会调用scan_boardinfo扫描board_list,找到挂接在它上面的spi设备,然后创建并注册spi_device。这样EM9280在系统启动完成后SPI所对应的设备节点为:“/dev/spidev1.0”。

3、spi-dev的使用

SPI常用四种数据传输模式,主要差别在于:输出串行同步时钟极性(CPOL)和相位(CPHA)可以进行配置。如果CPOL= 0,串行同步时钟的空闲状态为低电平;如果CPOL= 1,串行同步时钟的空闲状态为高电平。如果CPHA= 0,在串行同步时钟的前沿(上升或下降)数据被采样;如果CPHA = 1,在串行同步时钟的后沿(上升或下降)数据被采样。对于SPI模式的定义如下表1:

SPI Mode CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

应用程序可以通过read()、write()、ioctl()函数使用spi-dev驱动,在EM9280中SPI是半双工模式,最高波特率为12Mbps, 所以选择调用read/write函数进行数据通讯,而ioctl()函数仅仅用于对于SPI通讯参数的设置。如:

static const char *device = '/dev/spidev1.0';
static uint8_t mode = 3;
static uint8_t bits = 8;
static uint32_t speed = 1000000;
int main( int argc, char *argv[] )
{
int i, fd;
int ret = 0;
char wr_buf[]={ 0xff,0x00,0x1f,0x0f,0xff,0x00,0x1f,0x0f, 0xff,0x00 };
char rd_buf[10];
fd = open(device, O_RDWR);
if (fd < 0)
pabort('can't open device');
// 设置 spi mode,其定义参见表1
ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
if (ret == -1)
pabort('can't set spi mode');
ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
if (ret == -1)
pabort('can't get spi mode');
// 设置数据bit位
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
if (ret == -1)
pabort('can't set bits per word');
ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
if (ret == -1)
pabort('can't get bits per word');
// 设置SPI通讯波特率
ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
if (ret == -1)
pabort('can't set max speed hz');
ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
if (ret == -1)
pabort('can't get max speed hz');
printf('spi mode: %d\n', mode);
printf('bits per word: %d\n', bits);
printf('max speed: %d Hz (%d KHz)\n', speed, speed/1000);
if( write(fd, wr_buf, ARRAY_SIZE(wr_buf)) != ARRAY_SIZE(wr_buf))
perror('Write Error');
if( read(fd, rd_buf, ARRAY_SIZE(rd_buf)) != ARRAY_SIZE(rd_buf) )
perror('Read Error');
else
{
for (i=0; i<(int)ARRAY_SIZE(rd_buf);i++) 
{
printf('0x%02X ', rd_buf[i]);
if (i%2)
printf('\n');
}
}
close(fd);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11849

    浏览量

    219759
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    37191
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙芯中科携手五所高校加速构建自主信息技术人才体系

    为推动国产自主可控处理器深度融入高校人才培养全链条,加速构建自主信息技术人才体系,龙芯校园行活动相继走进中国科学技术大学、安庆师范大学、湖南大学、广西大学、大连理工大学5所高校,聚焦龙芯自主信息技术
    的头像 发表于 04-13 14:32 485次阅读

    深入解析Rockchip SFC驱动SPI Flash传输流程与问题排查指南

    Controller)驱动spi-rockchip-sfc.c),用于高效管理SPI Flash的读写传输。本文基于Linux内核驱动
    的头像 发表于 02-04 07:13 939次阅读
    深入解析Rockchip SFC<b class='flag-5'>驱动</b>:<b class='flag-5'>SPI</b> Flash传输流程与问题排查指南

    瑞芯微(EASY EAI)RV1126B SPI使用

    1.SPI简介SPI是串行外设接口(SerialPeripheralInterface)的缩写,是Motorola公司推出的一种同步串行接口技术,是一种高速、全双工、同步的通信总线在用
    的头像 发表于 01-03 14:00 2013次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>SPI</b>使用

    国产芯筑基,飞腾主板赋能信未来

    信息技术自主可控成为国家战略的今天,信产业正从“政策驱动”迈向“市场驱动”的高质量发展新阶段。作为信产业链的核心硬件基石,主板的国产化
    的头像 发表于 12-30 09:49 450次阅读
    国产芯筑基,飞腾主板赋能信<b class='flag-5'>创</b>未来

    龙芯中科成功举办2025信息技术应用创新产教融合交流会

    11月30日,在教育部教育管理信息中心、山东省电化教育馆的支持和指导下,龙芯中科联合浪潮集团、济南幼儿师范高等专科学校(以下简称“济南幼高专”),成功举办信息技术应用创新产教融合交流会,并同步举行信息技术应用创新实践基地启用仪式
    的头像 发表于 12-08 14:53 1030次阅读

    龙芯中科助力2025教育信息技术应用创新大赛成功举办

    2025年11月13日-15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-21 16:23 978次阅读

    诚迈科技信电脑助力2025第二届教育信息技术应用创新大赛圆满收官

    11月15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-17 17:58 886次阅读
    诚迈科技信<b class='flag-5'>创</b>电脑助力2025第二届教育<b class='flag-5'>信息技术</b>应用创新大赛圆满收官

    OBOO鸥柏|信触摸一体机兆芯115寸Linux国产系统技术智造

    BOO鸥柏信触摸一体机:兆芯115寸Linux智造新标杆在信息技术应用创新浪潮中,【OBOO鸥柏】推出的信触摸一体机以其卓越性能和智能化设计,成为行业数字化转型的重要工具。这款搭载
    的头像 发表于 11-16 15:44 3001次阅读
    OBOO鸥柏|信<b class='flag-5'>创</b>触摸一体机兆芯115寸<b class='flag-5'>Linux</b>国产系统<b class='flag-5'>技术</b>智造

    宝马南京信息技术有限公司开业

    今日,宝马(南京)信息技术有限公司在南京正式“挂牌运行”。这家华晨宝马全资子公司由领悦数字信息技术有限公司南京分公司“迭代”而来,代表着一次里程碑式的“进化”。这次升级不仅加速了宝马在华数字化转型进程,更通过深化本土创新,为“未来智慧出行”的发展谱写了核心“代码”。
    的头像 发表于 10-29 15:17 847次阅读

    易华录入选国家级信息技术应用创新典型解决方案

    近日,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)公布了“2024年信息技术应用创新解决方案”评选结果。易华录申报的“基于节能高效蓝光的超级智能存储解决方案”凭借显著的
    的头像 发表于 08-07 15:35 1864次阅读

    信息技术应用产学协同人才培养行动计划”正式发布,诚迈科技入选首批参与单位

    设在中国软件评测中心。诚迈科技作为信技术先锋企业,受邀成为首批参与单位,与国内顶尖高校、领军企业和权威机构携手,共同打造具有中国特色的信息技术人才培养新范式,为
    的头像 发表于 08-06 17:29 1780次阅读
    “<b class='flag-5'>信息技术</b>应用产学协同人才培养行动计划”正式发布,诚迈科技入选首批参与单位

    佛瑞亚如何通过信息技术推动业务增长

    在数字化、信息化的浪潮下,信息技术已经不仅是后台工具,更成为驱动企业发展的关键力量。本期Women Inspiring Mobility,我们采访了佛瑞亚中国区信息技术总监马瑛,了解她
    的头像 发表于 07-29 14:00 1094次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 876次阅读

    DEKRA德凯成为沙特通信和信息技术设备技术法规认证机构

    近日,DEKRA德凯成功获得沙特标准、计量和质量组织(SASO)认可,正式成为沙特通信和信息技术设备技术法规(Technical Regulation for Communications
    的头像 发表于 07-15 14:27 1112次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 9843次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略