Hi3518EV200學習記錄之使用者態SPI

2021-08-17 17:44:40 字數 1599 閱讀 5303

linux環境:ubuntu10.04

sdk版本:(hi3518e_sdk_v1.0.3.0.tgz)hi3518ev200r001c01spc030

~ # ls /dev/spi*

/dev/spidev0.0   /dev/spidev1.0   /dev/spidev1.1

其中spidev0.0是spi0片選0;spidev1.0是spi1片選0;spidev1.1是spi1片選1。

本次,我使用的是spi1片選0,也就是spidev1.0,對應pin腳為spi1_csn0、spi1_sclk、spi1_sdi、spi_sdo;使用spidev1.0需要對上述引腳進行管腳復用配置,如下:

himm 0x200f0050 0x1    # muxctrl_reg20   0x1  復用為spi1_sclk

himm 0x200f0054 0x1    # muxctrl_reg21   0x1  復用為spi1_sdo

himm 0x200f0058 0x1    # muxctrl_reg22   0x1  復用為spi1_sdi

himm 0x200f005c 0x1    # muxctrl_reg23   0x1  復用為spi1_csn0

二、spi1片選0初始化如下:

static int fd_a7196;

static int spi_a7196_init(void)

//通過ioctl設定spi傳輸模式

ret = ioctl(fd_a7196, spi_ioc_wr_mode, &mode);    /* set spi mode   */

if (ret == -1)

//通過ioctl設定spi資料位寬

ret = ioctl(fd_a7196, spi_ioc_wr_bits_per_word, &bits);  /* set spi bits per word */

if (ret == -1)

//通過ioctl設定spi傳輸速率

ret = ioctl(fd_a7196, spi_ioc_wr_max_speed_hz, &speed); /* max speed hz  */

if (ret == -1) 

return ret;

}三、spi讀寫操作函式

void spiwritebyte(int fd_spi, uint8_t regaddr)

}void spiwriteregister(int fd_spi, uint8_t regaddr, uint8_t regval)

}void spiwritebuffer(int fd_spi, uint8_t regaddr, uint8_t *buf, uint16_t size)

}uint8_t spireadbyte(int fd_spi)

return  rx_buff[0];

}uint8_t spireadregister(int fd_spi, uint8_t regaddr)

return rx_buff[1];

}void spireadbuffer(int fd_spi, uint8_t regaddr, uint8_t *buf, uint16_t size)

}

編譯Hi3518EV200 SDK遇到的問題

解決辦法 sudo apt get install lib32z1 sudo apt get install lib32stdc 6 4.8 dbg解決辦法 sudo apt get install uboot mkimage 更高的linux版本使用u boot tools替代 sudo apt ...

海思Hi3518EV200(2)開發環境

1.linux開發環境 2.linux開發環境描述 3.搭建linux開發環境 1 安裝linux伺服器 這裡使用ubuntu 10.04 lts 2 安裝交叉編譯工具 海思sdk包中提供專門的編譯工具鏈 arm hisiv300 linux和arm hisiv400 linux。3 安裝sdk 將...

海思Hi3518EV200(2)開發環境

1.linux開發環境 2.linux開發環境描述 3.搭建linux開發環境 1 安裝linux伺服器 這裡使用ubuntu 10.04 lts 2 安裝交叉編譯工具 海思sdk包中提供專門的編譯工具鏈 arm hisiv300 linux和arm hisiv400 linux。3 安裝sdk 將...