请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:OMAP3530 主题中讨论的其他器件: DM3730
工具/软件:Linux
软件:Linux-2.6.32
硬件:OMAP3530 BeagleBoard
如何为 SPI 功能配置 GPIO_14/GPIO_15/GPIO_17/GPIO_21?
GPIO 与 M25P128-VMF6T (storeurage) SPI 闪存连接。
现在我的 Linux 具有/dev/spidev3.1的器件节点、但我无法通过 SPI 将数据传输到 M25P128。
我的步骤:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define GPIO99_LOW 0x6004
#define GPIO99_HIGH0x6005
#define SOFT_ware_SIZE (1024)
int main (int argc、char * argv[]){
int fd_mtd、fd_tt、fd_new_soft;
内径尺寸、转塔;
int val = 0x01;
char data[SOFT_ware_SIZE]={0};
char buff [SOFT_ware_SIZE]={0};
静态 uint8_t 模式;
静态 uint8_t 位= 8;
静态 uint32_t 速度= 50000;
如果((FD_MTD =开路("/dev/spidev3.1、O_RDWR))=-1){
Perror ("/dev/spidev3.1 ");
返回-1;
}
如果((ioctl (fD_MTD、SPI_IOC_RD_MODE、&MODE))=-1){
printf ("无法获取 SPI rd_mode \n");
关闭(FD_MTD);
返回-1;
}
如果((ioctl (fD_MTD、SPI_IOC_WR_MODE、&MODE))=-1){
printf ("无法设置 SPI ww_mode \n");
关闭(FD_MTD);
返回-1;
}
memset (data、8、soft_ware_size);
printf (“写入 data =%d……” ...\n"、data[512]);
int i = 0;
while (1){
对于(I = 0;I < 128;I++){
如果((size = write (fD_MTD、data、SOFT_ware_size))< 0){
printf ("无法写入 SPI \n");
关闭(FD_MTD);
返回-1;
}
printf ("写入大小=%d \n"、大小);
lseek (FD_MTD、(I + 1)* 1024、seek_set);
}
lseek (FD_MTD、0、seek_set);
I = 0;
}
返回0;
}