linux-2.6.26下SPI1(4) S3C2440 spi驱动简单测试
来源:互联网 发布:搜索引擎优化建议指南 编辑:程序博客网 时间:2024/05/14 09:21
基础请参考:linux-2.6.26下SPI1(3) S3C2440 spi驱动简单测试
说明:
1、GPIO控制使用相关的宏即可,不用wirte read相关函数
2、寄存器读写推荐使用ioread iowrite相关函数,不推荐直接操作指针
3、内核源码需添加SPI相关注册
4、内核配置需添加SPI
{
unsigned char cmd;
// struct resource *res;
// int size;
//2: 端口功能配置
// RST1
s3c2410_gpio_cfgpin(S3C2410_GPG8, S3C2410_GPG8_OUTP);
s3c2410_gpio_setpin(S3C2410_GPG8, 1);
// RST2
s3c2410_gpio_cfgpin(S3C2410_GPA11, S3C2410_GPA11_OUT);
s3c2410_gpio_setpin(S3C2410_GPA11, 1);
// CS1
s3c2410_gpio_cfgpin(S3C2410_GPA1, S3C2410_GPA1_OUT);
s3c2410_gpio_setpin(S3C2410_GPA1, 1);
// CS2
s3c2410_gpio_cfgpin(S3C2440_GPJ12, S3C2440_GPJ12_OUTP);
s3c2410_gpio_setpin(S3C2440_GPJ12, 1);
// GPG 5 6 7配置为SPI接口 SPI1
s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1);
s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);
// SPPRE1 = 0x10; // PCLK/2/(X+1) 应小于25M PCLK=400M X=0x10 BAUD=11.8M X最小为7
cmd =0x18;
iowrite8(cmd,spi_sppre1);// 波特率设置
mdelay(10);
cmd=ioread8(spi_sppre1);// 读取错误
printk(KERN_EMERG "spi_sppre1=%#x readb :%#x \n",(int )spi_sppre1,cmd);
cmd=ioread8(spi_spcon1);//
cmd=(0<<6)|(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);
iowrite8((char)cmd,spi_spcon1);//
cmd=ioread8(spi_sppin1);//
cmd=(0<<2)|(0<<0);
iowrite8((char)cmd,spi_sppin1);//
return 0;
}
int spi_init_test(void)
{
unsigned char tmp=0;
spi_spcon1 = (int *)ioremap(0x59000020,1);
spi_spsta1 = (int *)ioremap(0x59000024,1);
spi_sppin1 = (int *)ioremap(0x59000028,1);
spi_sppre1 = (int *)ioremap(0x5900002c,1);
spi_sptdat1 = (int *)ioremap(0x59000030,1);
spi_sprdat1 = (int *)ioremap(0x59000034,1);
printk("Init spi success!\n");
tmp=0;
*spi_sppre1=0x18;
tmp=*spi_sppre1;
printk("readByte=%#x \n",tmp);
tmp=0x55;
iowrite8(tmp,spi_sppre1);
tmp=0;
tmp=ioread8(spi_sppre1);
printk("ioread8=%#x \n",tmp);
io_init();
spi_data_test();
return 0;
}
调试读写寄存器打印正确。SPI读写也成功,读写部分代码就不贴了,比较简单。
- linux-2.6.26下SPI1(4) S3C2440 spi驱动简单测试
- linux-2.6.26下SPI1(3) S3C2440 spi驱动简单测试
- linux-2.6.26下SPI1(0) Linux2.6.32下SPI驱动的移植(mini2440)
- S3C2440 spi驱动简单测试
- S3C2440 spi驱动简单测试
- S3C2440 spi驱动简单测试 (转)
- S3C2440 SPI驱动简单测试
- S3C2440 SPI驱动简单测试
- linux S3C2440 spi 驱动简单测试 (基于简单字符驱动)
- linux S3C2440 spi 驱动简单测试 (基于简单字符驱动)
- linux-2.6.26下SPI1(2)带2个CS驱动移植调试
- S3C2440 Linux驱动移植——SPI
- S3C2440 Linux驱动移植——SPI
- S3C2440 Linux驱动移植——SPI
- linux下SPI驱动
- linux下SPI驱动
- linux内核SPI总线驱动简单编写测试
- linux-2.6.26下SPI(1)驱动移植调试
- linux-2.6.26下SPI1(0) Linux2.6.32下SPI驱动的移植(mini2440)
- java调用webservice用是axis还是xfire的,两种调用方法不同
- linux_C_environ变量
- 一道有点意思的递归面试题
- RAC 的一些概念性和原理性的知识
- linux-2.6.26下SPI1(4) S3C2440 spi驱动简单测试
- @全球热门
- C#调用WebService
- python twisted安装中的错误
- 图像腐蚀 膨胀 细化的基本原理
- 《unix编程艺术》总结的出色程序员十大好习惯
- C# webservice的简单示例
- SYS_SUPPORTS_MULTITHREADING和CONFIG_MIPS_MT_SMTC
- EBS 可保留量(Quantity Available To Reserve) 异常