老师共享的文件远见_spi模块_第1页
老师共享的文件远见_spi模块_第2页
老师共享的文件远见_spi模块_第3页
老师共享的文件远见_spi模块_第4页
老师共享的文件远见_spi模块_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SPI 模块(WOZON)2012/10/24编改学生在此文稿基础性重新整理,注入自己的思维,并且在编改此文稿变成自己的东西。上签上自己名字,方能将目录学习目的2参考文献212参考文献22S5PC100 的 SPI 模块32.134SPI 知识3在 S5PC100 中 SPI 模块34.14.2程序例程45M25PC10A 资源5程序参考例程65.15.2编写日期作者内容概要2012-10-24WOZON创建1 学习目的学习 SPI 工作原理,理解 S5PC100 对 SPI 提供的资源,学习 M25P10A SPI 编程。知识,学习2 参考文献2.1参考文献参考文献指的是远见的文件。无。外部

2、参考文献指的是相对于上述参考文献以外的文件。S5PC100_UM_REV104(SAMSUNG).pdf三星公司关于 SPI 知识.docx来自M25P10A.pdf博文。3SPI:是 Serial Peripheralerface 的缩写,字面意思为串行接口,是一种间的一种通讯机制。MOSI: (Master Out Salver In)数据收发线,对主来说是数据输入。MISO: (Master In Saver Out)数据收发线,对主来说是数据输出。来说是数据输出,对与从来说是数据输入,对于从SCK:(Serial clock)时钟信号线。CC(CS):(chip select)片选信号

3、CPOL: (clock polar)时钟极性,功能是时钟信号极性设定位。CPHA: (clock phase)时钟相位,功能是收发顺序设定位。4 S5PC100 的 SPI 模块4.1 SPI 知识SPI 是一种设备()之间通讯技术,是摩托罗拉公司率先发起,与 I2C 一样被许多厂商广泛采用,参见关于 SPI 知识.docx。4.2 在 S5PC100 中 SPI 模块特点:1、每个 SPI 包含两个位移寄存器一个为接收数据,另一个为发送数据,它们都可支持 8、16 和 32bit 数据宽度,所以 SPI 为全双工串行通讯。每个 SPI 有 3 种时钟源可以选择。每个 SPI 都可支持两个独

4、立的 FIFO 用于收发数据,每个 FIFO 为 16 个 32bit 数据组成。支持主工作模式和从工作模式两种。支持接收无发送操作,即可以主动给出时钟信号。收发工作频率高达 50MHz。2、3、4、5、6、有 3 个 SPI 模块,下图为 SPI 的时钟源(PCLK、SCLK_SPIO_48 和 SCLK_SPIn)关系图:S5PC100 的 4 中通讯时序模式:5 程序例程目的操作M25PC10A,该是一种闪存。5.1 M25PC10A 资源特性:1、1Mbit Flash 内存。2、每页编程在 1.4mS 完成。3、每扇区擦写 0.65S。4、整块擦写 1.7S。5、使用 2.3 到 3

5、.6V 供电,深度休眠 1uA。6、支持 SPI 总线,速度高达 50MHz。7、电子:JEDC(0 x2011)。8、数据保存 20 年。内存组织:1、131,072 字节(1Mbits);2、4 个扇区(32768 字节/扇区);3、512 页(256 字节/页);第 1 引脚为片选信号(In),第 2 引脚数据输出(Out),第 3 引脚写保护(In),第 4 引脚电源接地,第 5 引脚数据输入(In),第 6 引脚时钟输入(In),第 7 引脚挂起信号(In),第 8引脚接电源。SPI 采用CPOL=0,CPHA=0 和CPOL=1.CPHA=1 两种工作时序模式。M24P10A的操作

6、命令:5.2 程序参考例程#include s5pc100.h#include uart.h#define SPI0_CLK_GATE_ON(16)#define MAX50/* Flash #define #define #define #define*/ #define #define*/opcodes. */ OPCODE_WREN OPCODE_WRDA OPCODE_RDSROPCODE_WRSR0 x060 x040 x050 x01/*/*/*/*Write enable */Write disable */Read sWrite sus register */us regist

7、er 1 byteOPCODE_NORM_READOPCODE_FAST_READ0 x030 x0b/* Read data bytes (low frequency) */* Read data bytes (high frequency)#define #define #define #define #define#defineOPCODE_PPOPCODE_BE_4K OPCODE_BE_32K0 x02/*Page Program (up to 256 bytes) */0 x200 x52/*/*/*/*Erase EraseErase4KiB block */ 32KiB blo

8、ck */whole flash chip */OPCODE_CHIP_ERASE 0 xc7OPCODE_SEOPCODE_RDID0 xd8Sector erase (usually/* Read JEDEC ID */64KiB)*/0 x9f/* SusRegister SR_WIPSR_WELbits.*/ 12#define#define/* Write/* Writein progress */enablelatch*/延时,用于操作同步void _delay(volatiletimes)i,j;for (j = 0; j times;j+)for (i = 0; i 1000;

9、 i+);/复位。void _soft_reset(void)SPI0.CH_CFG |= 0 x1 5;_delay(1);SPI0.CH_CFG &= (0 x1 5);void init_SPI0()/* set GPB03 to support spi0*/ GPB.GPBCON = (GPB.GPBCON & 0 xf0000)| 0 x2222;/* enable clk_gate, spi_clksel = PCLK; spi_scaler CLK_GATE_D1.CLK_GATE_D1_4 |= SPI0_CLK_GATE_ON; SPI0.CLK_CFG &= 0 x0;_s

10、oft_reset();reset= 0*/softSPI0.CH_CFG &= (0 x1 4) | (0 x1 3) | (0 x1 2) | 0 x3);/master mode, active high and Format ASPI0.MODE_CFG = SPI0.MODE_CFG & (0 x3 17) | (0 x3 29);/BUS_WIDTH=8bit,CH_WIDTH=8bitSPI0.CS_REG &= (0 x1 1);/ SPI0.SLAVESEL |= (0 x1 1);SPI0.CLK_CFG |= 1 8;/Clockenablespiclock=pclk/2

11、/从设备,CS片选信号为1void _disable_salve(void)SPI0.CS_REG |= 0 x1; /disable salve_delay(1);/从设备使能,CS片选信号为0void _eable_salve(void)SPI0.CS_REG &= 0 x1; /enable salve_delay(1);/向中写入数据void _transfer(unsigned char *data,i;len)SPI0.CH_CFG |= 0 x1; / enable Tx Channel_delay(1);for (i = 0; i len; i+) SPI0.SPI_TX_DA

12、TA = datai;while( !(SPI0.SPI_SUS & (0 x1 21)_delay(1);SPI0.CH_CFG &= 0 x1; / disable Tx Channel);/从中数据void _receive(unsigned char *buf,i;len)SPI0.CH_CFG |= 0 x1 1; / enable Rx Channel_delay(1);for (i = 0; i len; i+)bufi = SPI0.SPI_RX_DATA;_delay(1);SPI0.CH_CFG &= (0 x1 4)+0 x30);(buf0&0 xf)+0 x30);(

13、 );(M);(T);(=);(0);(x);(buf14)+0 x30);(buf1&0 xf)+0 x30);( );(M);(C);(=);(0);(x);(buf24)+0 x30);(buf2&0 xf)+0 x30);p(n);/按扇区擦除void erase_sector(addr)unsignedchar buf4; OPCODE_SE;addr 16;addr 8; addr;buf0buf1buf2buf3=_eable_salve();_transfer(buf, 4);_disable_salve();/整个擦除void erase_chip()unsigned cha

14、r buf4; buf0 = OPCODE_CHIP_ERASE;_eable_salve();_transfer(buf, 1);_disable_salve();/OPCODE_CHIP_ERASE=0 xc7/等待写完成void _wait_till_write_finished()unsigned char buf1;_eable_salve();buf0 = OPCODE_RDSR; /OPCODE_RDSRInstruction_transfer(buf, 1);= 0 x05 ReadSus Registerwhile(1)_receive(buf, 1);if(buf0 & S

15、R_WIP);elseputs( Write is finished.n );break;_disable_salve();/写使能void _enable_write()unsigned char buf1;buf0 = OPCODE_WREN;_eable_salve();_transfer(buf, 1);_disable_salve();/OPCODE_WREN = 0 x06void WriteDatapagenumber)oSPI0ByPage(unsigned char *data,len,unsigned char buf4;/cfg_spi0();_soft_reset();

16、_enable_write();/* 杩欓噷浣跨敤鐨勬槸鐗囨摝闄紝鍙erase_chip();_wait_till_write_finished();牴鎹 渶姹傛敼涓簊ector_erase */buf0buf1buf2buf3=OPCODE_PP; /OPCODE_PP = 0 x02 Page Program Instruction 0;pagenumber-1 ;/pagenumber 12560;_soft_reset();_enable_write();_eable_salve();_transfer(buf, 4);_transfer(data, len);_disable_salve();_wait_till_write_finished();void ReadDataFromSPI0ByPage(unsigned char *data,unsigned char buf4;/cfg_spi0();_soft_reset();len,pagenumber)buf0buf1buf2buf3=OPCODE_NORM_READ;0;pagenumber -0;1;_eable_salve();_transfer(buf, 4);_rece

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论