当前位置: 首页 > news >正文

黄江网站建设公司自己房子做民宿挂什么网站

黄江网站建设公司,自己房子做民宿挂什么网站,太原快速排名,软件开发app制作公司排名eeprom用iic通信。eeprom有几个特点需要关注#xff1a; 1、可以单字节读写 2、eeprom按页划分存储#xff0c;不同型号的eeprom的页大小不一致#xff0c;往eeprom写数据时#xff0c;如果写到了该页的末尾#xff0c;会自动从该页的开头继续写#xff0c;把之前的数据…eeprom用iic通信。eeprom有几个特点需要关注 1、可以单字节读写 2、eeprom按页划分存储不同型号的eeprom的页大小不一致往eeprom写数据时如果写到了该页的末尾会自动从该页的开头继续写把之前的数据覆盖读则不会。 /** Copyright 2017 NXP* All rights reserved.** SPDX-License-Identifier: BSD-3-Clause*//* Standard C Included Files */ #include stdio.h #include string.h #include pin_mux.h #include clock_config.h #include board.h #include fsl_debug_console.h #include fsl_lpi2c.h/******************************************************************************** Definitions******************************************************************************/ #define EEPROM_I2C_MASTER (LPI2C3) #define EEPROM_I2C_BAUD (400000UL)/* Select USB1 PLL (480 MHz) as master lpi2c clock source */ #define LPI2C_CLOCK_SOURCE_SELECT (0U) /* Clock divider for master lpi2c clock source */ #define LPI2C_CLOCK_SOURCE_DIVIDER (5U) /* Get frequency of lpi2c clock */ #define LPI2C_CLOCK_FREQUENCY ((CLOCK_GetFreq(kCLOCK_Usb1PllClk) / 8) / (LPI2C_CLOCK_SOURCE_DIVIDER 1U)) #define LPI2C_MASTER_CLOCK_FREQUENCY LPI2C_CLOCK_FREQUENCY#define AT24C256 #define EEPROM_PAGE_SIZE 64 #define EEPROM_SIZE (32*1024) #define EEPROM_ADDR_BYTES 2 #define EEPROM_WRITE_ADDRESS_8_BIT (0xA2) #define EEPROM_READ_ADDRESS_8_BIT (0xA3)/******************************************************************************** Prototypes******************************************************************************//******************************************************************************** Variables******************************************************************************//******************************************************************************** code******************************************************************************/ void EepromDelayUs(uint32_t us) {uint32_t tcnt;tcnt us * (CLOCK_GetFreq(kCLOCK_CpuClk) / 1000000);while(tcnt--); }/******************************************************************************** brief eeprom takes time to write data* param call after write data to eeprom* retval ******************************************************************************/ uint8_t EepromWriteWait(uint8_t SlaveAddr8bit) {status_t reVal kStatus_Fail;uint32_t delay_count 1000;do{/* Ӧ־Աһμ */LPI2C_MasterClearStatusFlags(EEPROM_I2C_MASTER, kLPI2C_MasterNackDetectFlag);/* EEPROMдѰַźţԼǷӦ */reVal LPI2C_MasterStart(EEPROM_I2C_MASTER, (SlaveAddr8bit1), kLPI2C_Write);/* ȴ30usŻӦ־*/EepromDelayUs(100);/* LPI2C MSRĴNDF־ȷdelay_countû00Ϊʱ˳ */}while(EEPROM_I2C_MASTER-MSR kLPI2C_MasterNackDetectFlag delay_count-- );/* Ӧ־ֹһͨѶ */LPI2C_MasterClearStatusFlags(EEPROM_I2C_MASTER, kLPI2C_MasterNackDetectFlag);/* ֹͣźţֹ´ͨѶ */reVal LPI2C_MasterStop(EEPROM_I2C_MASTER);/* ȴ10usȷֹͣźŷ*/EepromDelayUs(100);/* ʧܻǰĵȴʱ */if(delay_count 0 || reVal ! kStatus_Success){return kStatus_Fail;}return kStatus_Success; }/*!* brief I2C Msater Init*/ void I2CMsaterInit(LPI2C_Type *base,uint32_t baud) {status_t reVal kStatus_Fail;/*Clock setting for LPI2C*/CLOCK_SetMux(kCLOCK_Lpi2cMux, LPI2C_CLOCK_SOURCE_SELECT);CLOCK_SetDiv(kCLOCK_Lpi2cDiv, LPI2C_CLOCK_SOURCE_DIVIDER);lpi2c_master_config_t masterConfig;/** masterConfig.debugEnable false;* masterConfig.ignoreAck false;* masterConfig.pinConfig kLPI2C_2PinOpenDrain;* masterConfig.baudRate_Hz 100000U;* masterConfig.busIdleTimeout_ns 0;* masterConfig.pinLowTimeout_ns 0;* masterConfig.sdaGlitchFilterWidth_ns 0;* masterConfig.sclGlitchFilterWidth_ns 0;*/LPI2C_MasterGetDefaultConfig(masterConfig);/* Change the default baudrate configuration */masterConfig.baudRate_Hz baud;/* Initialize the LPI2C master peripheral */LPI2C_MasterInit(base, masterConfig, LPI2C_MASTER_CLOCK_FREQUENCY); }/* subaddressSize is 2 */ int32_t I2CMsaterWriteData(uint8_t SlaveAddr8bit, uint16_t WriteAddr, uint8_t* pBuffer,uint16_t DataSize) {int32_t reVal;lpi2c_master_transfer_t masterXfer {0};masterXfer.slaveAddress (SlaveAddr8bit1);masterXfer.direction kLPI2C_Write;masterXfer.subaddress (uint32_t)WriteAddr;masterXfer.subaddressSize EEPROM_ADDR_BYTES;masterXfer.data pBuffer;masterXfer.dataSize DataSize;masterXfer.flags kLPI2C_TransferDefaultFlag;/* Send master non-blocking data to slave */reVal LPI2C_MasterTransferBlocking(EEPROM_I2C_MASTER, masterXfer);if (reVal ! kStatus_Success){return -1;}return 0; }/* subaddressSize is 2 */ int32_t I2CMsaterReadData(uint8_t SlaveAddr8bit, uint16_t readAddr, uint8_t* pBuffer,uint16_t DataSize) {int32_t reVal;lpi2c_master_transfer_t masterXfer {0};/* start slaveaddress(w) subAddress repeated start slaveaddress(r) rx data buffer stop */masterXfer.slaveAddress (SlaveAddr8bit1);masterXfer.direction kLPI2C_Read;masterXfer.subaddress (uint32_t)readAddr;masterXfer.subaddressSize EEPROM_ADDR_BYTES;masterXfer.data pBuffer;masterXfer.dataSize DataSize;masterXfer.flags kLPI2C_TransferDefaultFlag;reVal LPI2C_MasterTransferBlocking(EEPROM_I2C_MASTER, masterXfer);if (reVal ! kStatus_Success){return -1;}return 0; }/******************************************************************************* when NumByteToWrite EEPROM_PAGE_SIZE ,it will go back to the start address of the page and write continuely ******************************************************************************/ int32_t EepromWriteData(uint8_t SlaveAddr8bit, uint16_t WriteAddr, uint8_t* pBuffer, uint16_t NumByteToWrite) {status_t reVal kStatus_Fail;uint16_t firstPageBytes,otherPageBytes,otherPageNum,lastPageBytes;firstPageBytes EEPROM_PAGE_SIZE - (WriteAddr % EEPROM_PAGE_SIZE);otherPageBytes (NumByteToWrite firstPageBytes) ? (NumByteToWrite - firstPageBytes) : 0;if (otherPageBytes0){reVal I2CMsaterWriteData(SlaveAddr8bit, WriteAddr, pBuffer, NumByteToWrite);if (reVal ! kStatus_Success){return kStatus_Fail;}EepromWriteWait(SlaveAddr8bit);}else{otherPageNum otherPageBytes / EEPROM_PAGE_SIZE;lastPageBytes otherPageBytes % EEPROM_PAGE_SIZE;//write first pagereVal I2CMsaterWriteData(SlaveAddr8bit, WriteAddr, pBuffer, firstPageBytes);if (reVal ! kStatus_Success){return kStatus_Fail;}EepromWriteWait(SlaveAddr8bit);WriteAddr firstPageBytes;pBuffer firstPageBytes;if(otherPageNum 0 ){reVal I2CMsaterWriteData(SlaveAddr8bit, WriteAddr, pBuffer, lastPageBytes);if (reVal ! kStatus_Success){return kStatus_Fail;}EepromWriteWait(SlaveAddr8bit);}else{while(otherPageNum--){reVal I2CMsaterWriteData(SlaveAddr8bit, WriteAddr, pBuffer, EEPROM_PAGE_SIZE);if (reVal ! kStatus_Success){return kStatus_Fail;}EepromWriteWait(SlaveAddr8bit);WriteAddr EEPROM_PAGE_SIZE;pBuffer EEPROM_PAGE_SIZE;}if(lastPageBytes ! 0){reVal I2CMsaterWriteData(SlaveAddr8bit, WriteAddr, pBuffer, lastPageBytes);if (reVal ! kStatus_Success){return kStatus_Fail;}EepromWriteWait(SlaveAddr8bit);}}}return kStatus_Success; }#define BUFF_SIZE 255 uint8_t TxBuffer1[BUFF_SIZE]; uint8_t RxBuffer1[BUFF_SIZE]; void EerpromTest(void) {uint16_t i,cnt;cnt sizeof(TxBuffer1)/sizeof(TxBuffer1[0]);for(i0;icnt;i){*(TxBuffer1i) i;}//test write 1 pageI2CMsaterWriteData(EEPROM_WRITE_ADDRESS_8_BIT,2,TxBuffer1,cnt);EepromWriteWait(EEPROM_WRITE_ADDRESS_8_BIT);I2CMsaterReadData(EEPROM_READ_ADDRESS_8_BIT,0,RxBuffer1,cnt);//test write more than 1 pageEepromWriteData(EEPROM_WRITE_ADDRESS_8_BIT,0,TxBuffer1,cnt);I2CMsaterReadData(EEPROM_READ_ADDRESS_8_BIT,0,RxBuffer1,cnt); }
http://www.w-s-a.com/news/76342/

相关文章:

  • 手游网站做cpc还是cpm广告号宣武郑州阳网站建设
  • vs连接数据库做网站建立网站
  • 电商网站设计图片素材p2p网站建设石家庄
  • 莲塘网站建设如何文字推广一个婚恋网站
  • 医院网站建设工作汇报WordPress不发邮件了
  • 怎么做外语网站个人网页设计作品ps
  • 网站原型怎么做vps如何建两个网站
  • 商城网站建设源码嘉兴seo计费管理
  • 城乡建设网站证件查询系统wordpress 时间代码
  • php网站建设 关键技术做网站哪家正规
  • 网站开发用什么写得比较好谷歌的英文网站
  • 青岛网站建设公司在哪vivo手机商城
  • 兼职刷客在哪个网站做哪个网站做淘宝客
  • 眼科医院网站开发网络营销特点是什么
  • 提交网站给百度增加wordpress插件
  • 网站建设企业官网体验版是什么Wordpress哪个模板最快
  • 美丽说网站模板湖北可以做网站方案的公司
  • 北京西站进站最新规定建设网站的提成是多少
  • wordpress站点如何加速网站建设描述怎么写
  • 如何免费建造网站免费vi模板网站
  • 商丘做网站多少钱扬州大发网站建设
  • 网站建设哪家性价比高自己做项目的网站
  • 成立一个网站济宁营销型网站建设
  • 南通购物网站建设设计类平台网站
  • 专业网站建设咨询thinkphp网站源码下载
  • 怎么制作一个国外网站网站推广找哪家公司好
  • 免费做网站怎么做网站想在网上卖东西怎么注册
  • 淘宝网站建设的策划书网投怎么做网站
  • 如何免费做公司网站视频网站开发视频
  • 网站后台是怎么更新wordpress 大于2m的xm