/* 初始化函數(shù) */
void SPI_FLASH_Init(void)
{
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2, SPI_MODE_MASTER,
SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE,
SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x07);
SPI_Cmd(ENABLE);
GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_WriteHigh(SPI_CS, SPI_Pin_CS)
}
/*
寫使能
*/
void SPI_FLASH_WriteEnable(void)
{
/* Select the FLASH: Chip Select low */
SPI_FLASH_CS_LOW();
/* Send "Write Enable" instruction */
SPI_FLASH_SendByte(WREN);
/* Deselect the FLASH: Chip Select high */
SPI_FLASH_CS_HIGH();
}
/**
發(fā)送一個字節(jié)的數(shù)據(jù)
*/
u8 SPI_FLASH_SendByte(u8 byte)
{
while (SPI_GetFlagStatus( SPI_FLAG_TXE) == RESET);
SPI_SendData(byte);
while (SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET);
return SPI_ReceiveData();
}
/*
等待寫數(shù)據(jù)結(jié)束
*/
void SPI_FLASH_WaitForWriteEnd(void)
{
u8 FLASH_Status = 0;
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(RDSR);
do
{
/* Send a dummy byte to generate the clock needed by the FLASH
FLASH_Status = SPI_FLASH_SendByte(Dummy_Byte);
}
while ((FLASH_Status & WIP_Flag) == SET); /* Write in progress */
SPI_FLASH_CS_HIGH();
}
/*
寫一頁數(shù)據(jù)
*/
void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite)
{
SPI_FLASH_WriteEnable();
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(WRITE);
/****************************************************************/
/* Send WriteAddr high nibble address byte to write to */
SPI_FLASH_SendByte((WriteAddr & 0xFF0000) >> 16);
/* Send WriteAddr medium nibble address byte to write to */
SPI_FLASH_SendByte((WriteAddr & 0xFF00) >> 8);
/* Send WriteAddr low nibble address byte to write to */
SPI_FLASH_SendByte(WriteAddr & 0xFF);
/*****************************************************************/
/* while there is data to be written on the FLASH */
while (NumByteToWrite--)
{
/* Send the current byte */
SPI_FLASH_SendByte(*pBuffer);
/* Point on the next byte to be written */
pBuffer++;
}
SPI_FLASH_CS_HIGH();
SPI_FLASH_WaitForWriteEnd();
}
/*
寫B(tài)UFFER數(shù)據(jù)
*/
void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite)
{
u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0;
Addr = WriteAddr % SPI_FLASH_PageSize;// 判斷是否是頁對齊
count = SPI_FLASH_PageSize - Addr; //一頁里的第幾個
NumOfPage = NumByteToWrite / SPI_FLASH_PageSize;
NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize;
if (Addr == 0) /* WriteAddr is SPI_FLASH_PageSize aligned */
{
if (NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */
{
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);
}
else /* NumByteToWrite > SPI_FLASH_PageSize */
{
while (NumOfPage--)
{
SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize);
WriteAddr += SPI_FLASH_PageSize;
pBuffer += SPI_FLASH_PageSize;
}
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);
}
}
else /* WriteAddr is not SPI_FLASH_PageSize aligned */
{
if (NumOfPage == 0) /* NumByteToWrite < SPI_FLASH_PageSize */
{
if (NumOfSingle > count)
{ /* (NumByteToWrite + WriteAddr) > SPI_FLASH_PageSize */
temp = NumOfSingle - count;
SPI_FLASH_PageWrite(pBuffer, WriteAddr, count);
WriteAddr += count;
pBuffer += count;
SPI_FLASH_PageWrite(pBuffer, WriteAddr, temp);
}
else
{
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumByteToWrite);
}
}
else /* NumByteToWrite > SPI_FLASH_PageSize */
{
NumByteToWrite -= count;
NumOfPage = NumByteToWrite / SPI_FLASH_PageSize;
NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize;
SPI_FLASH_PageWrite(pBuffer, WriteAddr, count);
WriteAddr += count;
pBuffer += count;
while (NumOfPage--)
{
SPI_FLASH_PageWrite(pBuffer, WriteAddr, SPI_FLASH_PageSize);
WriteAddr += SPI_FLASH_PageSize;
pBuffer += SPI_FLASH_PageSize;
}
if (NumOfSingle != 0)
{
SPI_FLASH_PageWrite(pBuffer, WriteAddr, NumOfSingle);
}
}
}
}
/*
讀一個buffer數(shù)據(jù)
*/
void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead)
{
/* Select the FLASH: Chip Select low */
SPI_FLASH_CS_LOW();
SPI_FLASH_SendByte(READ);
/* Send ReadAddr high nibble address byte to read from */
SPI_FLASH_SendByte((ReadAddr & 0xFF0000) >> 16);
/* Send ReadAddr medium nibble address byte to read from */
SPI_FLASH_SendByte((ReadAddr& 0xFF00) >> 8);
/* Send ReadAddr low nibble address byte to read from */
SPI_FLASH_SendByte(ReadAddr & 0xFF);
while (NumByteToRead--) /* while there is data to be read */
{
/* Read a byte from the FLASH */
*pBuffer = SPI_FLASH_SendByte(Dummy_Byte);
/* Point to the next location where the byte read will be saved */
pBuffer++;
}
SPI_FLASH_CS_HIGH();
}
上一篇:keil編譯后load一直是灰色的解決辦法
下一篇:最后一頁
推薦閱讀
史海拾趣
為了保持競爭優(yōu)勢,ALSC始終將技術(shù)創(chuàng)新作為核心驅(qū)動力。公司投入大量資源用于研發(fā),不斷推出具有創(chuàng)新性的半導體產(chǎn)品。其中,一款具有高性能和低延遲的芯片產(chǎn)品贏得了市場的廣泛認可,為公司的快速發(fā)展奠定了堅實的基礎。
為了保持競爭優(yōu)勢,ALSC始終將技術(shù)創(chuàng)新作為核心驅(qū)動力。公司投入大量資源用于研發(fā),不斷推出具有創(chuàng)新性的半導體產(chǎn)品。其中,一款具有高性能和低延遲的芯片產(chǎn)品贏得了市場的廣泛認可,為公司的快速發(fā)展奠定了堅實的基礎。
隨著產(chǎn)品質(zhì)量的不斷提升和市場份額的逐步擴大,德旭電子開始注重品牌建設和市場拓展。公司積極參加各類行業(yè)展會和交流活動,展示自身實力和產(chǎn)品優(yōu)勢。同時,德旭電子還加大了廣告宣傳力度,通過線上線下相結(jié)合的方式提升品牌知名度和美譽度。
在市場拓展方面,德旭電子不僅深耕國內(nèi)市場,還積極開拓國際市場。公司憑借優(yōu)質(zhì)的產(chǎn)品和專業(yè)的服務贏得了越來越多客戶的信賴和支持。國際市場的拓展為德旭電子的持續(xù)發(fā)展注入了新的動力。
為了進一步擴大市場份額,EG & G Inc公司積極開展市場拓展和國際合作。公司在中國、歐洲等多個國家和地區(qū)設立了分支機構(gòu),與當?shù)仄髽I(yè)建立了緊密的合作關(guān)系。同時,公司還積極參與國際展覽和交流活動,展示了其先進的技術(shù)和產(chǎn)品。這些努力使得EG & G Inc公司在國際市場上獲得了更多的機會和認可。
隨著產(chǎn)品質(zhì)量的提升和市場認可度的提高,Autonics開始積極拓展國內(nèi)外市場。公司在韓國國內(nèi)設立了多個辦事處和代理公司,覆蓋了主要城市和工業(yè)區(qū)。同時,Autonics還積極開拓海外市場,先后在多個國家和地區(qū)設立了銷售網(wǎng)點和生產(chǎn)基地。通過國際化戰(zhàn)略的實施,Autonics的產(chǎn)品逐漸走向世界,成為國際知名的傳感器和控制器品牌。
Catalyst公司在電子行業(yè)的初創(chuàng)期,以其獨特的創(chuàng)新理念和前瞻性的技術(shù)布局,奠定了堅實的基礎。公司創(chuàng)始團隊由一群對電子行業(yè)充滿熱情的工程師和科學家組成,他們共同致力于研發(fā)高效、穩(wěn)定的電子產(chǎn)品。通過不斷的技術(shù)研發(fā)和市場調(diào)研,Catalyst成功推出了一系列具有競爭力的產(chǎn)品,逐步在市場中嶄露頭角。
我要對一個0.8mm間距的BGA芯片布線,在芯片引腳間走線線寬取為5mil,然后引到芯片外面以后變線寬為10mil,請問這樣變化線寬對信號會產(chǎn)生影響嗎?… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 19:59 編輯 傳統(tǒng)空氣凈化產(chǎn)品要么是由化學成份組成、要么會有臭氧等毒副作用產(chǎn)生、要么凈化效果很弱..... 力天世紀空氣凈化系統(tǒng)工程有限公司自主研發(fā)的等離子室內(nèi)空氣凈化器,可以在任何相對封閉的室 ...… 查看全部問答∨ |
來自:http://www.embedinfo.com/wen-list.asp?id=381 我不是最優(yōu)秀的嵌入式開發(fā)人員,但我是優(yōu)秀的,至少我每天都在不懈努力著…… 以前是用51做東西的,雖然沒有大的研究成果但自己研究的小產(chǎn)品也在被使用著,談不上 ...… 查看全部問答∨ |
|
*********************************************************************************************************** Function name: InitSysTick** Descriptions: ...… 查看全部問答∨ |
wince ReadFile函數(shù)讀取數(shù)據(jù)失敗 CString strFilePath = _T("\\\\硬盤\\\\AccountFile.dll"); HANDLE m_hAccountFile = CreateFile(strFilePath,GENERIC_READ|GENERI ...… 查看全部問答∨ |
各位大哥好: 我使用的是顯示屏是480X234的分辨率.windows CE桌面顯示正常,但是右鍵->顯示屬性的時候,對話框太大,無法瀏覽完整的對話框,請問怎么設置系統(tǒng)對話框的大小?小弟剛剛注冊,分全供上了,謝謝!!!… 查看全部問答∨ |
我想找一塊使用時間比較長的成熟開發(fā)板,帶SD卡驅(qū)動,USB接口和液晶顯示功能就可以了,提供相關(guān)PCB制板文件,這是其一 其二,想在上面再擴展個心電采集電路部分,調(diào)通該部分功能 如有對以上擅長者,有合作意向請聯(lián)系本人 QQ:12665590 … 查看全部問答∨ |
近日在看linux下的嵌入式平臺下的usb設備驅(qū)動,苦讀代碼之后始終沒找到寫入中斷信號的地方,我在想中斷信號是不是自己由usb控制器對控制數(shù)據(jù)解碼后產(chǎn)生的呢? 問題: 中斷信號是USB控制器的硬件產(chǎn)生的,還是由軟件讀取那8個字節(jié)的控制數(shù)據(jù)產(chǎn)生的? ...… 查看全部問答∨ |
是典型的高速處理器與慢速外設之間的通信問題,我的設想是盡可能減少硬件而實現(xiàn)通信.現(xiàn)在DSP的頻率為40MHz,還可以降些下來,但是不能降得過低,最好是不降,因為還要與別的DSP通信. 而慢速外設的頻率只有100KHz.相差實在太遠,不知道有沒有折衷的辦法既 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創(chuàng)新升級
- 工業(yè)市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現(xiàn)100%美國生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強化中國市場戰(zhàn)略布局,德州儀器正靈活應對全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過本地合作和創(chuàng)新加強支持中國汽車行業(yè)
- 貿(mào)澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現(xiàn)車載充電器小型化!
- 用上車規(guī)級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- 專訪 | 未來座艙的智能之道
- 2019款凱美瑞2.0換WCVT是減配?那是你沒讀懂WCVT
- UCL造出柔性納米帶提高電池性能
- 續(xù)航超600公里創(chuàng)新高,動力電池企業(yè)如何滿足市場需求?
- 國產(chǎn)醫(yī)療器械邁入黃金十年 利好政策不斷出臺
- 芯片市場上演江湖爭霸
- 完全自動駕駛來臨前,高效數(shù)據(jù)閉環(huán)是自動駕駛系統(tǒng)的核心競爭力
- 軟件定義汽車趨勢下,座艙電子開發(fā)模式亟待升級
- dSpace與Velodyne合作 加速自動駕駛激光雷達技術(shù)的開發(fā)
- FLIR與VSI Labs在AEB系統(tǒng)中融合熱感知傳感器 提升系統(tǒng)性能