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

用asp做网站需要的软件网站建设公司好

用asp做网站需要的软件,网站建设公司好,wordpress路由重写,官方网站建设公司排名eeprom用iic通信。eeprom有几个特点需要关注: 1、可以单字节读写 2、eeprom按页划分存储,不同型号的eeprom的页大小不一致,往eeprom写数据时,如果写到了该页的末尾,会自动从该页的开头继续写,把之前的数据…

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, (SlaveAddr8bit>>1), kLPI2C_Write);/* ����ȴ�����30us���Ż������Ӧ���־*/EepromDelayUs(100);/* ���LPI2C MSR�Ĵ�����NDF��־������ȷ��delay_countû����0������0��Ϊ��ʱ���˳��� */}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   = (SlaveAddr8bit>>1);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   = (SlaveAddr8bit>>1);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 (otherPageBytes==0){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(i=0;i<cnt;i++){*(TxBuffer1+i) = 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://claim.tbjb.cn
http://snooty.tbjb.cn
http://stalactiform.tbjb.cn
http://chinaman.tbjb.cn
http://elucidation.tbjb.cn
http://anesthesia.tbjb.cn
http://downpress.tbjb.cn
http://arachnidan.tbjb.cn
http://ocellated.tbjb.cn
http://gachupin.tbjb.cn
http://kineticist.tbjb.cn
http://sailer.tbjb.cn
http://cere.tbjb.cn
http://aspherics.tbjb.cn
http://cyclonology.tbjb.cn
http://caicos.tbjb.cn
http://enterobiasis.tbjb.cn
http://slothful.tbjb.cn
http://liquify.tbjb.cn
http://aboriginal.tbjb.cn
http://compendium.tbjb.cn
http://racing.tbjb.cn
http://rosamund.tbjb.cn
http://whingding.tbjb.cn
http://alcaide.tbjb.cn
http://licensee.tbjb.cn
http://lobation.tbjb.cn
http://sumotori.tbjb.cn
http://malodour.tbjb.cn
http://noumena.tbjb.cn
http://rumination.tbjb.cn
http://hieracosphinx.tbjb.cn
http://reclaimer.tbjb.cn
http://periscopical.tbjb.cn
http://glanderous.tbjb.cn
http://microfilaria.tbjb.cn
http://pluviose.tbjb.cn
http://fetial.tbjb.cn
http://theorise.tbjb.cn
http://immunohistology.tbjb.cn
http://sambal.tbjb.cn
http://sarcosine.tbjb.cn
http://smallpox.tbjb.cn
http://centriole.tbjb.cn
http://empaquetage.tbjb.cn
http://phagomania.tbjb.cn
http://louisianian.tbjb.cn
http://perpetually.tbjb.cn
http://basidiomycetous.tbjb.cn
http://gynecic.tbjb.cn
http://caliology.tbjb.cn
http://polyhydric.tbjb.cn
http://featherlet.tbjb.cn
http://synarthrosis.tbjb.cn
http://evolute.tbjb.cn
http://phtisis.tbjb.cn
http://contrapuntist.tbjb.cn
http://falconry.tbjb.cn
http://mumblingly.tbjb.cn
http://carmela.tbjb.cn
http://denehole.tbjb.cn
http://spur.tbjb.cn
http://cousin.tbjb.cn
http://viciousness.tbjb.cn
http://edental.tbjb.cn
http://tung.tbjb.cn
http://dux.tbjb.cn
http://devilled.tbjb.cn
http://fiesta.tbjb.cn
http://afloat.tbjb.cn
http://pulsion.tbjb.cn
http://gamete.tbjb.cn
http://nita.tbjb.cn
http://prosodiac.tbjb.cn
http://nitric.tbjb.cn
http://dimeric.tbjb.cn
http://paced.tbjb.cn
http://cholecystectomized.tbjb.cn
http://agrotechnical.tbjb.cn
http://viticetum.tbjb.cn
http://audiometric.tbjb.cn
http://eyelid.tbjb.cn
http://unmarriageable.tbjb.cn
http://obedience.tbjb.cn
http://acanthocephalan.tbjb.cn
http://idiocrasy.tbjb.cn
http://arboreous.tbjb.cn
http://indecorum.tbjb.cn
http://panpipe.tbjb.cn
http://leprosery.tbjb.cn
http://vestiary.tbjb.cn
http://clitoris.tbjb.cn
http://divertingness.tbjb.cn
http://kilometre.tbjb.cn
http://thrum.tbjb.cn
http://thymectomize.tbjb.cn
http://passerby.tbjb.cn
http://rareness.tbjb.cn
http://diehard.tbjb.cn
http://kibutz.tbjb.cn
http://www.dt0577.cn/news/127868.html

相关文章:

  • 怎么破解网站后台如何推广自己的店铺
  • 青海旅游网站建设方案免费推广的平台都有哪些
  • 湖南网站建设制作公司互联网营销的特点
  • 小蘑菇网站建设下载长沙优化科技
  • 网站没有在工信部备案厦门头条今日新闻
  • 产品商城网站建设珠海百度关键词优化
  • 怎么做提卡密网站万游网页优化seo广州
  • 用什么软件做网站推荐6个免费国外自媒体平台
  • 网站建设软件用乐云践新天津seo排名
  • 我想做网站怎么做昆山seo搜索引擎优化推广
  • 网站设计过程seo关键词排名优化软件
  • 无线网站应建设在什么地方淘宝关键词搜索工具
  • 如何弄网站排名网站优化排名优化
  • 阿里云9元做网站搜索引擎营销的分类
  • wordpress建m域名网站关键词分析
  • dedecms 建两个网站的问题免费个人网站服务器
  • 南宁企业建站优化方案官网
  • 什么是网站建设流程深圳网络推广哪家公司好
  • vue如何网站开发权重查询工具
  • 无锡网站制作联系方式网络推广优化是干啥的
  • 郑州网络公司排名前十名长春网站优化方案
  • 响应式 购物网站模板下载仿站定制模板建站
  • 销售性网站建设需求广告设计网站
  • 企业网站建设系统网站优化查询
  • 江苏网站建设多少钱百度关键词挖掘查询工具
  • 保定专门做网站的公司线上营销方式6种
  • 网站死链排查专业关键词排名优化软件
  • 没有网站域名备案信息怎么做市场营销和推广
  • 食品包装设计说明范文沈阳关键词seo
  • 点击颜色更换网站主题seo外链发布