日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

E8卡 linux 系统 读写 高通 字库芯片

發布時間:2023/12/14 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 E8卡 linux 系统 读写 高通 字库芯片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在E8卡上通過linux的spi驅動讀寫高通字庫芯片。


spi是分主從的,字庫芯片不會主動通過spi發送數據。只有在linux上發起讀操作的時候,字庫才會把他的數據發送出來。


/*
* spi mode
*/
ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
if (ret == -1)
printf("can't set spi mode");


ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
if (ret == -1)
printf("can't get spi mode");


/*
* bits per word
*/
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
if (ret == -1)
printf("can't set bits per word");


ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
if (ret == -1)
printf("can't get bits per word");


/*
* max speed hz
*/
ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
if (ret == -1)
printf("can't set max speed hz");


ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
if (ret == -1)
printf("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);

? ?

? ? ?//spi 發送緩沖區

unsigned char tx[1024] = {0}; ?

//spi 接收緩沖區
unsigned char tx2[1024] = {0};

//字庫芯片讀命令
tx[0] = 0x03;

//3個字節的地址數據
tx[1] = (unsigned char)((address&0xff0000)>>16);?
tx[2] = (unsigned char)((address&0xff00)>>8);?
tx[3] = (unsigned char)(address&0xFF);?
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx, ?//發送緩沖區
.rx_buf = (unsigned long)tx2,// 接收緩沖區
.len = 4+buflen, ?//buflen 是字庫數據的長度,由于在發送前4個字節時,字庫芯片是不往主機發送數據。如果想讀取buflen長度的字庫數據,主機必須再發送長度為buflen的任意數據,

.delay_usecs = delay,?
.speed_hz = speed,
.bits_per_word = bits,
};


ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
接收到的字庫數據,就在tx2中。

總結

以上是生活随笔為你收集整理的E8卡 linux 系统 读写 高通 字库芯片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。