《4(100%开源)蓝牙心率防水运动手环_外部Flash读写.docx》由会员分享,可在线阅读,更多相关《4(100%开源)蓝牙心率防水运动手环_外部Flash读写.docx(7页珍藏版)》请在第一文库网上搜索。
1、蓝牙心率防水运动手环外部F1ash读写疯壳智能穿戴开发系列配套资料:https:/www.fengke.c1ub/GeekMart/su_fkZyGYgrp.jsp配套视频:https:/www.fengke.c1ub/GeekMart/su_fTSgU13y3.jsp外部f1ash读写1 SP1+简介本节中,我们将使用DA14580自带的SPI+来进行对外部FIaSh的读写操作。SPI(Seria1Periphera1interface),串行外围设备接口,是是Motoro1a首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPRoM、F1ASH.实时时钟、AD转换器,还有
2、数字信号处理器和数字信号解码器之间。该接口一般使用4条线:串行时钟线(SC1K),主机输入/从机输出数据线MISO主机输出/从机输入数据线MOS1和低电平有效的从机选择线NSSo我们DA14580的这个SPI+接口支持SPI总线的一个子集。这个串行接口在主/从模式可以发送和接受8、16或32位,并且在主模式可以发送9位。SPI+接口有双向的2*16位字的FIF0,功能得到了增强。我们这个接口可以工作在主或从模式;有8、9、16、32位的操作方式;SPI控制器的时钟达到16MHz,SPI时钟源可以通过编程进行1、2、4、8分频;SPI的时钟线达到8MHz;支持SP1的0、1、2、3四种工作模式;
3、SPIDO的空闲电平可以通过编程设置;可屏蔽的中断发生器;单向读和写模式降低总线负载。2 硬件设计本次我们所使用的外部F1aSh是W25X20C1,它一共有8个引脚。1号引脚CS用于芯片的选择。2号引脚Do是数据输出引脚。3号引脚WP是写保护。4号是GNDc5号D1O引脚既可以作为数据输入,也可以作为数据输出。6脚C1K是F1aSh的串行时钟信号。第7脚用于暂停SPI的通信。最后VCC就是电源脚。3 软件设计要通过SPI进行对外部F1ash的读写操作,我们首先是进行相关时钟引脚的配置,也就是下面的函数periphjnit()ovoidperiphjnit(void)/systeminit设置1
4、6MHZ时钟关闭看门狗开启管脚开启debugger打开外围电源SetWord16(C1K_AMBA_REGz0x00);SetWOrd16(SET_FREEZE_REG,FRZ_WDOG);SetBitS16(SYS_CTR1_REG,PAD_1ATCH_EN,1);SetBitS16(SYS_CTR1_REG,DEBUGGER_ENAB1E,1);SetBitS16(PM1CTR1_REG,PERIPH_S1EEP,O);/Powerupperiphera1spowerdomainSetBitS16(PM11eTR1_REG,PERIPH_S1EEP,0);whi1e(!(GetWord16
5、(SYS_STAT_REG)&PER_IS_UP);/InitpadsGPIO_ConfigurePin(UART2_GPIO_POR1UART2_TX_PIN,OUTPUT,PID_UART2_TX,fa1se);GPIO_ConfigurePin(UART2_GPIO_POR1UART2_RX_PIN,INPUT,PID_UART2_RXZfa1se);GPIOJ1onfigurePin(SP1GPIO_PORT,SPI_CS_PINZOUTPUT,PID_SPI_ENZtrue);GP1O.ConfigurePin(SP1GPIO_PORT,SPI_C1K_PIN,OUTPUT,P1D_
6、SP1C1K,fa1se);GPIO_ConfigurePin(SPI_GPIO_POR1SP1Dc1PIN,OUTPUT,PID_SPI_DO,fa1se);GP1OqnfigUrePin(SP1GPIO_PORT,SPI_DI_PINZINPUT,PID_SPI_D1fa1se);/Initia1izeUARTcomponentSetBits16(C1K_PER_REG,UART2_ENAB1E,1);/enab1ec1ockforUART2uart2_init(UART2_BAUDRATEzUART2_DATA1ENGTH);)在periphjnit(),我们完成了SP1Uart2的管脚
7、配置,以及对串口2进行初始化。然后,我们要进行的是对SP1接口的一个初始化。voidspi_init(SPI_Pad_t*cs_pad_param,SPI_Word_Mode_tbitmode,SP1ROIe_tro1e,SPI_Po1arity_Mode_tCIk_po1,SPI_PHA_Mode_tpha_mode,SPI_MINT_Mode_tirq,SPI_XTA1_Freq_tfreq)第一个参数cs_paC1Param是分配给SPICS信号的端口管脚,我们这里用的是03脚。第二个参数bitmode是SP1操作的位数,有8.9.16.32位操作模式,我们这里用的8位,所以填写SPI_
8、M0DE_8BITo第三个参数ro1e是用来配置我们SP1的工作方式,我们这里用的是主SPI,因此选择SPI_RO1E_MASTERo第四个参数c1k,po1是用来选择SP1时钟空闲极性,我们用的是SPI_C1K_ID1E_PO1_1OW,表示串行同步时钟的空闲状态为低电平。参数pha_mode是选择SPI的采样边沿,我们这里选的是SPI_PHA_MODE_Oo最后两个参数irq和freq分别是用来配置SP1中断和时钟分频。我们选择SPI_MINT_DISAB1E和SPI_XTA1_DIV_8o以上是我们对SP1的初始化设置,当然,大家也可以根据自己的需求进行配置。对SP1初始化设置完成之后,
9、我们就可以开始读写外部F1aSh了,通过调用:int32_tspi_f1ash_write_data(uint8_t*wr_data_ptr,uint32_taddress,uint32_tsize);int32_tspi_f1ash_read_data(uint8_t*rd_data_ptr,uint32_taddress,uint32_tsize)o4 实验现象首先,插好“nk和USB转串口,然后打开打开串口调试助手。(1)选择串口号,我们图中是COM1,这个根据实际情况选择。配置串口参数,波特率为115200,数据位8,停止位1,没有校验位和控制流,与下图一致。点击打开串口,4是串口接收
10、框。SSCOM3.2(作者:聂“讴(J),T5,Emai1:mcu521_|口X打开文生I反许茗串口号COM1i帮助特据止始率位位位1152C1o工81二NoneDTR4时发送IIOm移/次RTSHEX发送F发送新行字符串输入框:,发送文件I保存窗口I1jHEX显示WWW.MCU51.COM扩展IFCB打样那家强?当然就是嘉立创!【官网】百方创PCB打样-SMT贴片一元器件商城一条龙服至打样语加曲睥粱睢婷的QQ:800058315环懂技术:品牌揖莅WiFiZGprsZGPS安信可射频橙组】【点次单升级为SSCoM5.13版】可在WinIo运行!COM1已关闭1152bpsCTS=ODSR=OR
11、1流控制None旦ww.mcu51.corS:4配置完串口之后,打开我们提供的代码。(I)点击仿真按键。图3(2)点击运行代码。图4I&SSCOM3.2(作者:聂匡(TT),http,Emai1:me._*官方QQ群:* *疯壳团队* *FK-DA14580-VI,0* *官网:WWw.fengke.c1ub*淘宝:ShoPII*457586268*SPIeTEST*ReadingSPIF1ashfirst256bytes.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
12、FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
13、FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFHEX显示串口号ICC1M3二关闭串口I帮助WWW.MCUS1.COM扩展I11520081NoneNoneDTR定时发送1000ms次HEX发送发送新行字符串输入框:I发送I波特率数据位停止位校始位流控制厂RTSrww.mcu51.corS:0R:5802COM3已打开115200bpsCTS=ODSR=OR1zPCB打样那家强?当然就是嘉立创!t官网】建方创PCB打样-SMT贴片-亓器件商城一条龙眼季打样清加助睥粱雁博的QQ:800058315K情技术品度推卷:FMSrsGPSt安信可射频植组】【点次单升级为SSCoM5.13版】可在W1n1O运行!完成之后,就能看到串口调试助手接收框信息如下。图5