完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
[tr]现在例程里面的数据模式是字符char类型,我想改为float类型要改哪些参数?附相关代码如下:
/****************************************************************************/ /* */ /* 读状态寄存器 */ /* */ /****************************************************************************/ void StatusGet(void) { tx_data[0] = SPI_FLASH_STATUS_RX; tx_len = rx_len = 2; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1); SpiTransfer(); } /****************************************************************************/ /* */ /* 写使能 */ /* */ /****************************************************************************/ void WriteEnable(void) { tx_data[0] = SPI_FLASH_WRITE_EN; tx_len = rx_len = 1; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1); SpiTransfer(); } /****************************************************************************/ /* */ /* 忙检测 */ /* */ /****************************************************************************/ void IsFlashBusy(void) { do{ StatusGet(); }while(rx_data[1] & WRITE_IN_PROGRESS); } /****************************************************************************/ /* */ /* 扇区擦除 */ /* */ /****************************************************************************/ void SectorErase(void) { tx_data[0] = SPI_FLASH_SECTOR_ERASE; tx_data[1] = SPI_FLASH_ADDR_MSB1; tx_data[2] = SPI_FLASH_ADDR_MSB0; tx_data[3] = SPI_FLASH_ADDR_LSB; tx_len = rx_len = 4; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1); SpiTransfer(); IsFlashBusy(); } /****************************************************************************/ /* */ /* 写扇区(256字节) */ /* */ /****************************************************************************/ void WritetoFlash(void) { unsigned int index; tx_data[0] = SPI_FLASH_PAGE_WRITE; tx_data[1] = SPI_FLASH_ADDR_MSB1; tx_data[2] = SPI_FLASH_ADDR_MSB0; tx_data[3] = SPI_FLASH_ADDR_LSB; // 准备要写入的数据 for (index = 10; index < 260; index++) { tx_data[index] = index; } for(index = 4; index < 260; index++) { vrf_data[index] = index; } tx_len = rx_len = index; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1); SpiTransfer(); IsFlashBusy(); } /****************************************************************************/ /* */ /* 读数据 */ /* */ /****************************************************************************/ void ReadFromFlash(void) { unsigned int index; tx_data[0] = SPI_FLASH_READ; tx_data[1] = SPI_FLASH_ADDR_MSB1; tx_data[2] = SPI_FLASH_ADDR_MSB0; tx_data[3] = SPI_FLASH_ADDR_LSB; // 情况变量 for (index = 4; index < 260; index++) { tx_data[index] = 0; } tx_len = rx_len = index; SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1); SpiTransfer(); } /****************************************************************************/ /* */ /* 数据校验 */ /* */ /****************************************************************************/ int VerifyData(void) { unsigned int index; for(index = 4; index < 260; index++) { if(vrf_data[index] != rx_data[index]) { UARTPuts("rn", -1); UARTPuts("VerifyData: Comparing the data written to and read", -1); UARTPuts(" from Flash.rnThe two data blocks are unequal.", -1); UARTPuts(" Mismatch found at index ", -1); UARTPutNum((int)index - 3); UARTPuts("rn", -1); UARTPuts("Verify Failed.rn", -1); return 0; } } if (index == 260) { UARTPuts("rnThe data in the Flash and the one written ", -1); UARTPuts("to it are equal.rn", -1); UARTPuts("Verify successfully.rn", -1); return 1; } return 0; } [/tr] |
|
相关推荐
2个回答
|
|
|
/****************************************************************************/
/* */ /* SPI 中断初始化 */ /* */ /****************************************************************************/ void SPIInterruptInit(void) { // 注册中断服务函数 IntRegister(C674X_MASK_INT4, SPIIsr); // 映射中断事件 IntEventMap(C674X_MASK_INT4, SYS_INT_SPI1_INT); // 使能可屏蔽中断 IntEnable(C674X_MASK_INT4); } /****************************************************************************/ /* */ /* SPI 初始化 */ /* */ /****************************************************************************/ void SPIInit(void) { unsigned char cs = 0x01; unsigned char dcs = 0x01; unsigned int val = SIMO_SOMI_CLK_CS; SPIReset(SOC_SPI_1_REGS); SPIOutOfReset(SOC_SPI_1_REGS); SPIModeConfigure(SOC_SPI_1_REGS, SPI_MASTER_MODE); SPIClkConfigure(SOC_SPI_1_REGS, 228000000, 20000000, SPI_DATA_FORMAT0); SPIPinControl(SOC_SPI_1_REGS, 0, 0, &val); SPIDefaultCSSet(SOC_SPI_1_REGS, dcs); // 配置 SPI 数据格式 SPIDataFormatConfig(SPI_DATA_FORMAT0); // 配置 SPI 数据格式及片选信号 SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), cs); // 映射中断到 INT1 SPIIntLevelSet(SOC_SPI_1_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL); // 使能 SPI SPIEnable(SOC_SPI_1_REGS); } /****************************************************************************/ /* */ /* 配置 SPI 数据格式 */ /* */ /****************************************************************************/ void SPIDataFormatConfig(unsigned int dataFormat) { // 配置 SPI 时钟 SPIConfigClkFormat(SOC_SPI_1_REGS, (SPI_CLK_POL_HIGH | SPI_CLK_INPHASE), dataFormat); // 配置 SPI 发送时 MSB 优先 SPIShiftM***First(SOC_SPI_1_REGS, dataFormat); // 设置字符长度 SPICharLengthSet(SOC_SPI_1_REGS, CHAR_LENGTH, dataFormat); } /****************************************************************************/ /* */ /* SPI 传输 */ /* */ /****************************************************************************/ void SpiTransfer(void) { p_tx = &tx_data[0]; p_rx = &rx_data[0]; SPIIntEnable(SOC_SPI_1_REGS, (SPI_RECV_INT | SPI_TRANSMIT_INT)); while(flag); flag = 1; SPIDat1Config(SOC_SPI_1_REGS, SPI_DATA_FORMAT0, 0x1); } /****************************************************************************/ /* */ /* SPI 中断服务函数 */ /* */ /****************************************************************************/ void SPIIsr(void) { unsigned int intCode = 0; IntEventClear(SYS_INT_SPI1_INT); intCode = SPIInterruptVectorGet(SOC_SPI_1_REGS); while (intCode) { if(intCode == SPI_TX_BUF_EMPTY) { tx_len--; SPITransmitData1(SOC_SPI_1_REGS, *p_tx); p_tx++; if (!tx_len) { SPIIntDisable(SOC_SPI_1_REGS, SPI_TRANSMIT_INT); } } if(intCode == SPI_RECV_FULL) { rx_len--; *p_rx = (char)SPIDataReceive(SOC_SPI_1_REGS); p_rx++; if (!rx_len) { flag = 0; SPIIntDisable(SOC_SPI_1_REGS, SPI_RECV_INT); } } intCode = SPIInterruptVectorGet(SOC_SPI_1_REGS); } } |
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
【创龙TLT113-MiniEVM开发板试用体验】相关开发过程的体验,以及与毫米波雷达的联调
925 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】--MQTT通讯
926 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】问题4 ubuntu镜像,opencv不能正常工作??
1012 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】10、 Qt实现ADC采集显示和内部温度曲线监控
1461 浏览 0 评论
【创龙TLT113-MiniEVM开发板试用体验】U盘读写速度测试教程
1831 浏览 0 评论
【创龙TL3562-MiniEVM开发板试用体验】问题1 更换到Ubuntu镜像后,USB识别不了外设
471浏览 1评论
【创龙TL3562-MiniEVM开发板试用体验】1、从系统启动卡制作开始
720浏览 1评论
【创龙TL3562-MiniEVM开发板试用体验】Grove移植4之BUTTON
326浏览 0评论
【创龙TL3562-MiniEVM开发板试用体验】--开发板外设与接口测试
813浏览 0评论
1127浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 17:03 , Processed in 0.851104 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1100