文档详情

新唐M0读写W25Q16存储器的程序.pdf

发布:2017-06-03约8.52千字共4页下载文档
文本预览下载声明
D:\LYN_工程\NUC1xx\PRJ\Nmj_0814\Soc\W25Q16.c #include Slave.h //***************************************************************************** //功能:初始化外设SPI0. //***************************************************************************** void SPI0_start (void) { /* GPIO为SPI0所用 */ DrvGPIO_InitFunctio ( E_FUNC_SPI0); /* SPI0为主模式, 传输类型=1, 32位传输 */ DrvSPI_Ope ( eDRVSPI_PORT0, eDRVSPI_MASTER, eDRVSPI_TYPE1, 8); /* MSB优先 */ DrvSPI_SetEndia ( eDRVSPI_PORT0, eDRVSPI_MSB_FIRST); /* 禁止自动从选择 */ DrvSPI_DisableAutoSS ( eDRVSPI_PORT0); /* 从选择引 低电平激活 */ DrvSPI_SetSlaveSelectActiveLevel ( eDRVSPI_PORT0, eDRVSPI_ACTIVE_LOW_FALLING); /* 禁止2比特传输模式 */ DrvSPI_Set2BitTransferMode ( eDRVSPI_PORT0, FALSE); /* SPI0的时钟频率为:1MHz */ DrvSPI_SetClockFreq ( eDRVSPI_PORT0,6000000,0); } //***************************************************************************** //功能:核对制造商编号: 0xEF;器件编号:ID: 0x14. //输入: //输出: //***************************************************************************** void W25Q16_RMidDid (void) { uint32_t x [1]; /* 发送位宽为:8 bits */ DrvSPI_SetBitLength ( eDRVSPI_PORT0, 8); /* 设置从选择引 :SS0 */ DrvSPI_SetSS ( eDRVSPI_PORT0, eDRVSPI_SS0); /* 发指令: 0x90, 读取MID/DID. */ x [0] = 0x90; DrvSPI_SingleWrite ( eDRVSPI_PORT0, x); /* 等待空闲 */ while ( DrvSPI_IsBusy( eDRVSPI_PORT0)); /* 发送位宽为:24 bits */ DrvSPI_SetBitLength ( eDRVSPI_PORT0, 24); /* 发送:24字节0 */ x [0] = 0x0; DrvSPI_SingleWrite ( eDRVSPI_PORT0, x); /* 等待空闲 */ while ( DrvSPI_IsBusy( eDRVSPI_PORT0)); /* 发送位宽为:16 bits */ DrvSPI_SetBitLength ( eDRVSPI_PORT0, 16); /* 接收 */ x [0] = 0x0; DrvSPI_SingleWrite ( eDRVSPI_PORT0, x); /* 等待空闲 */ while ( DrvSPI_IsBusy( eDRVSPI_PORT0)); /* 禁止从选择引 :SS0 */ DrvSPI_ClrSS ( eDRVSPI_PORT0, eDRVSPI_SS0); /* 从:Rx寄存器读回数据 */ DrvSPI_DumpRxRegister ( eDRVSPI_PORT0, x, 1); /* 核对:MID and DID *
显示全部
相似文档