欢迎来到天天文库
浏览记录
ID:27891462
大小:2.65 MB
页数:13页
时间:2018-12-06
《教你LPC54102双核套件固件库SPI的用法.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、教你LPC54102双核套件固件库SPI的用法 最近进度有点慢。现在把我SPI这部分分享下吧。这次我使用SPI0和I2C2这两个模块,I2C2负责采集MPU6050的数据,然后用OLED刷新数据。 SPI是串行外设接口(SerialPeripheralInterface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,在LPC5410中有两个SPI的模块,分别是SPI0和
2、SPI1。 SPI根据SPI时钟极性的极性和SPI时钟相位,SPI时钟极性CPOL,=0表示在没有数据传输时为低电平,=1表示没有数据传输时为高电平。SPI时钟相位CPHA,=0表示时钟的第一个沿更新数据、第二个沿锁存数据,=1表示时钟的第一个沿锁存数据、第二个沿更新数据。如下面的几个时序图: 我这次用了LPC54102的SPI0刷了小OLED。首先LPC54102套件上有个SPI/I2Cbrdgeheader,如下套件的原理图: 具体位置如下图: 板子的背面有对应的丝印文字,很容易找到。 这次没
3、用到中断和DMA。首先我们要配置好管脚。 voidInit_SPI_PinMux(void) { /*1.3=SPI0_SCK,0.14=SPI0_SSELN0,0.12=SPI0_MOSI,1.4=SPI0_MISO*/ Chip_IOCON_PinMuxSet(LPC_IOCON,1,3,(IOCON_FUNC5
4、IOCON_DIGITAL_EN
5、IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON,0,14,(IOCON_FUNC1
6、IOCON_DIGITAL_EN
7、I
8、OCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON,0,12,(IOCON_FUNC1
9、IOCON_DIGITAL_EN
10、IOCON_MODE_PULLUP)); Chip_IOCON_PinMuxSet(LPC_IOCON,1,4,(IOCON_FUNC5
11、IOCON_DIGITAL_EN
12、IOCON_MODE_PULLUP)); } 然后进行SPI的初始化。如下函数: 根据OLED上的SSD1306提供的手册和别人的写的模拟SPI驱动,我们要选用CPOL=0,和CPA=0
13、这种模式。 SSD1306的4线SPI的时序图: voidSPI_Init() { uint32_tmemSize,*devMem; ROM_SPIM_INIT_TspimInit; ROM_SPIM_XFER_CONFIG_TspimConfig; inti; Init_SPI_PinMux(); Chip_Clock_EnablePeriphClock(LPC_SPIM_CLOCK); Chip_SYSCON_PeriphReset(LPC_SPIM_RESET); /*Getneededsizeford
14、rivercontextmemory*/ memSize=ROM_SPIM_GetMemSize(); if(memSize》sizeof(drvData)){ DEBUGOUT(“Can‘tallocatememoryfordrivercontextr”); } devMem=drvData;/*Orjustusemalloc(memSize)*/ /*IniTIalizedriver*/ spimInit.pUserData=NULL; spimInit.base=(uint32_t)LPC_SPIM_POR
15、T; spimInit.baseClockRate=Chip_Clock_GetAsyncSyscon_ClockRate(); spimInit.spiPol[0]=0;/*AcTIvelowselectforSSEL0*/ spimInit.spiPol[1]=1; spimInit.spiPol[2]=1; spimInit.spiPol[3]=1; spimHandle=ROM_SPIM_Init(devMem,&spimInit); if(spimHandle==NULL){ /*ErroriniTIaliz
16、ingSPI*/ DEBUGOUT(“ErroriniTIalizingROMr”); } /*SetSPItransferconfiguration*/ spimConfig.dXferBitRate=S
此文档下载收益归作者所有