0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)EM9280 Linux SPI驅(qū)動簡介

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-16 09:24 ? 次閱讀

1、簡述

SPI(Synchronous Peripheral Interface)是一種同步串行數(shù)據(jù)通訊總線接口,常用于連接ADCs、EPROMs、Sensors或者是其他一些微控制器,SPI具有兩種工作模式:master和slave模式,其中master模式提供時鐘信號。

EM9280提供的SPI驅(qū)動支持master模式,該SPI接口為四線制SPI,包括:時鐘CLK、數(shù)據(jù)MISO (master in, slave out)、數(shù)據(jù) MOSI (master out, slave in)、片選CS。SPI管腳和GPIO28-GPIO31復用。具體的管腳定義請參見《EM9280工控主板數(shù)據(jù)手冊》相關(guān)章節(jié)。

本文將介紹EM9280如何實現(xiàn)SPI設備驅(qū)動(spi-dev)以及如何使用spi-dev。

2、Linux內(nèi)核配置

內(nèi)核配置中增加以下選項(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注冊的過程中會調(diào)用scan_boardinfo掃描board_list,找到掛接在它上面的spi設備,然后創(chuàng)建并注冊spi_device。這樣EM9280在系統(tǒng)啟動完成后SPI所對應的設備節(jié)點為:“/dev/spidev1.0”。

3、spi-dev的使用

SPI常用四種數(shù)據(jù)傳輸模式,主要差別在于:輸出串行同步時鐘極性(CPOL)和相位(CPHA)可以進行配置。如果CPOL= 0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL= 1,串行同步時鐘的空閑狀態(tài)為高電平。如果CPHA= 0,在串行同步時鐘的前沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA = 1,在串行同步時鐘的后沿(上升或下降)數(shù)據(jù)被采樣。對于SPI模式的定義如下表1:

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

應用程序可以通過read()、write()、ioctl()函數(shù)使用spi-dev驅(qū)動,在EM9280中SPI是半雙工模式,最高波特率為12Mbps, 所以選擇調(diào)用read/write函數(shù)進行數(shù)據(jù)通訊,而ioctl()函數(shù)僅僅用于對于SPI通訊參數(shù)的設置。如:

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');
// 設置數(shù)據(jù)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);

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207912
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34942
收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會”(信息技術(shù)應用創(chuàng)新工作委員會)提出,目的就是要推動我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?48次閱讀

    加速鯤鵬落地!拓維信息創(chuàng)遷移工具榮獲鯤鵬原生開發(fā)技術(shù)認證

    認證。圖/拓維·數(shù)據(jù)庫適配中間件取得鯤鵬原生開發(fā)N認證在數(shù)字化時代的大潮中,信創(chuàng)戰(zhàn)略作為國家推動信息技術(shù)應用創(chuàng)新、保障信息安全與自主可控的關(guān)鍵舉措,其重要性日益凸顯
    的頭像 發(fā)表于 09-10 08:03 ?241次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創(chuàng)</b>遷移工具榮獲鯤鵬原生開發(fā)<b class='flag-5'>技術(shù)</b>認證

    梯度科技入選2023年信息技術(shù)應用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應用創(chuàng)新發(fā)展大會暨解決方案應用推廣大會。會上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?270次閱讀

    中軟國際信創(chuàng)服務助力大連信創(chuàng)產(chǎn)業(yè)發(fā)展

    為進一步激發(fā)大連本地信創(chuàng)產(chǎn)業(yè)生態(tài)的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業(yè)協(xié)會攜手大連市信息技術(shù)應用創(chuàng)新綜合服務中心主辦,中軟國際協(xié)辦的,2024年大連市信息技術(shù)應用創(chuàng)新產(chǎn)業(yè)發(fā)展大會
    的頭像 發(fā)表于 08-27 16:49 ?667次閱讀

    翼輝信息入選2023年信息技術(shù)應用創(chuàng)新解決方案名單

    近日,2023 年(第五屆)信息技術(shù)應用創(chuàng)新解決方案公布遴選名單,歷經(jīng)資格初審、技術(shù)中評、區(qū)域評議、終評預審,翼輝以“面向工業(yè)領域嵌入式操作系統(tǒng) SylixOS 解決方案”,成功在全國優(yōu)秀方案中脫穎而出,入選典型解決方案名單。
    的頭像 發(fā)表于 04-28 11:37 ?401次閱讀
    翼輝<b class='flag-5'>信息</b>入選2023年<b class='flag-5'>信息技術(shù)</b>應用創(chuàng)新解決方案名單

    龍芯中科三項信創(chuàng)方案入圍工信部2023年信息技術(shù)應用創(chuàng)新應用示范案例名單

    近日,工業(yè)和信息化部通報了2023年信息技術(shù)應用創(chuàng)新解決方案征集遴選結(jié)果,本次共評選出典型解決方案173個、應用示范案例83個、單項創(chuàng)新案例64個。
    的頭像 發(fā)表于 03-07 16:45 ?675次閱讀
    龍芯中科三項信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術(shù)</b>應用創(chuàng)新應用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù)

    電子發(fā)燒友網(wǎng)站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù).pdf》資料免費下載
    發(fā)表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例程序固件<b class='flag-5'>信息技術(shù)</b>

    軟通動力與捷創(chuàng)技術(shù)簽訂戰(zhàn)略合作協(xié)議

    近日,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱“軟通動力”)與寧波捷創(chuàng)技術(shù)股份有限公司(以下簡稱“捷創(chuàng)技術(shù)”)正式簽訂戰(zhàn)略合作協(xié)議,并
    的頭像 發(fā)表于 02-03 16:35 ?1001次閱讀

    關(guān)于AD9280非線性的問題求解

    我有一塊用ad9280做ad轉(zhuǎn)換的板子,采用的是內(nèi)部2V參考電壓的設計,輸入信號范圍是0~2V。 然后我發(fā)現(xiàn)直流的時候有問題: Ain=1000mV的時候,輸出0111_1111 Ain
    發(fā)表于 12-13 06:02

    linux內(nèi)核中的SPI框架及SPI核心的初始化簡析

    在嵌入式linux開發(fā)中,SPI是一種常見的通信方式
    的頭像 發(fā)表于 12-11 09:10 ?1578次閱讀
    <b class='flag-5'>linux</b>內(nèi)核中的<b class='flag-5'>SPI</b>框架及<b class='flag-5'>SPI</b>核心的初始化簡析

    闡述量子信息技術(shù)的研究現(xiàn)狀與未來

    20世紀 80 年代, 科學家將量子力學應用到信息領域, 從而誕生了量子信息技術(shù), 諸如量子計算機、量子密碼、量子傳感等. 這些技術(shù)的運行規(guī)律遵從量子力學, 因此不僅其原理是量子力學, 器件本身也
    發(fā)表于 11-22 11:40 ?674次閱讀
    闡述量子<b class='flag-5'>信息技術(shù)</b>的研究現(xiàn)狀與未來

    linux安裝網(wǎng)卡驅(qū)動教程

    支持情況。一般來說,大部分常見的網(wǎng)卡型號都有對應的Linux驅(qū)動,可以在Linux官方的驅(qū)動支持列表中找到相關(guān)信息。如果你的網(wǎng)卡型號在列表中
    的頭像 發(fā)表于 11-17 11:11 ?3402次閱讀

    開鴻智谷受邀參加2023軟件和信息技術(shù)服務業(yè)創(chuàng)新發(fā)展論壇

    10月18日,以“智薈雄安創(chuàng)想未來”為主題的雄安新區(qū)2023軟件和信息技術(shù)服務業(yè)創(chuàng)新發(fā)展論壇在雄安新區(qū)國際酒店會議中心召開。本次論壇以推動軟件和信息技術(shù)服務業(yè)創(chuàng)新發(fā)展為目的,邀行政校企各級單位共商共建。開鴻智
    的頭像 發(fā)表于 10-20 08:30 ?689次閱讀
    開鴻智谷受邀參加2023軟件和<b class='flag-5'>信息技術(shù)</b>服務業(yè)創(chuàng)新發(fā)展論壇

    AD5676:Octal,16-Bit <em>nunano </em>DAC,帶有SPI界面數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)AD5676:Octal,16-Bit nunano DAC,帶有SPI界面數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有
    發(fā)表于 10-08 16:36
    AD5676:Octal,16-Bit <<b class='flag-5'>em</b>>nunano </<b class='flag-5'>em</b>>DAC,帶有<b class='flag-5'>SPI</b>界面數(shù)據(jù)表 ADI

    信息技術(shù)是干什么?

    廣播電子技術(shù)信息技術(shù)
    橙群微電子
    發(fā)布于 :2023年09月22日 09:17:48