當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]從開始接觸,到驅(qū)動編寫調(diào)試完成,前前后后花費(fèi)10多天,網(wǎng)上瀏覽了一下,目前還沒有找到硬件SPI控制NRF24L01的驅(qū)動程序,絕大多數(shù)都是軟件SPI,但是軟件SPI不好,不穩(wěn)定,既然都寫驅(qū)動程序了,肯定要用硬件SPI啦,這

從開始接觸,到驅(qū)動編寫調(diào)試完成,前前后后花費(fèi)10多天,網(wǎng)上瀏覽了一下,目前還沒有找到硬件SPI控制NRF24L01的驅(qū)動程序,絕大多數(shù)都是軟件SPI,但是軟件SPI不好,不穩(wěn)定,既然都寫驅(qū)動程序了,肯定要用硬件SPI啦,這樣才能學(xué)到東西。學(xué)習(xí)的過程中,通過看韋東山的SPI視頻,和參考他寫的兩個驅(qū)動程序。然后花費(fèi)了四五天,終于將驅(qū)動寫好了。這個驅(qū)動可以通過ioctl切換接收和發(fā)送模式,通過read,write選擇接收數(shù)據(jù)還是發(fā)送數(shù)據(jù),廢話少說,上代碼
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include"nrf.h"/*構(gòu)造注冊spi_driver*/#defineRX_MODE0xf1#defineTX_MODE0xf2staticintmajor;staticstructclass*class;staticintspi_NRF24L01_ce_pin;staticunsignedchar*ker_buf;staticstructspi_device*spi_NRF24L01_dev;staticunsignedcharopencount=0;staticvolatileintint_flag=0;staticDECLARE_WAIT_QUEUE_HEAD(nrf24l01_waitq);/*生成一個等待隊(duì)列頭wait_queue_head_t,名字為nrf24l01_waitq*/staticunsignedcharTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x10};//本地地址staticunsignedcharRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x10};//接收地址structpin_desc{unsignedintpin;unsignedintkey_val;};/*引腳描述結(jié)構(gòu)體*/structpin_descpins_desc[2]={/*按下時:0x010x02...松開始0x810x82...*/{S3C2410_GPG(0),0x01},};staticuint8TxBuf[TxBufSize]={0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,};staticuint8RxBuf[RxBufSize]={0};staticvoidNRF24L01_Set_CE(charval){s3c2410_gpio_setpin(spi_NRF24L01_ce_pin,val);}/*寄存器訪問函數(shù):用來設(shè)置24L01的寄存器的值?;舅悸肪褪峭ㄟ^WRITE_REG命令(也就是0x20+寄存器地址)把要設(shè)定的值寫到相應(yīng)的寄存器地址里面去,并讀取返回值。對于函數(shù)來說也就是把value值寫到reg寄存器中*/staticunsignedcharSPI_RW_Reg(unsignedcharreg,unsignedcharvalue){unsignedcharstatus;unsignedchartx_buf[2];unsignedcharrx_buf[2];tx_buf[0]=reg;tx_buf[1]=value;spi_write(spi_NRF24L01_dev,tx_buf,2);status=rx_buf[0];return(status);}/*讀取寄存器值的函數(shù):基本思路就是通過READ_REG命令(也就是0x00+寄存器地址),把寄存器中的值讀出來。對于函數(shù)來說也就是把reg寄存器的值讀到reg_val中去*/staticvoidSPI_Read(int*pMID,int*pDID,unsignedcharreg){unsignedchartx_buf[2];unsignedcharrx_buf[2];tx_buf[0]=reg;tx_buf[1]=0x00;spi_write_then_read(spi_NRF24L01_dev,tx_buf,2,rx_buf,2);*pMID=rx_buf[0];*pDID=rx_buf[1];}/*接收緩沖區(qū)訪問函數(shù):主要用來在接收時讀取FIFO緩沖區(qū)中的值。基本思路就是通過READ_REG命令把數(shù)據(jù)從接收FIFO(RD_RX_PLOAD)中讀出并存到數(shù)組里面去*///staticunsignedcharSPI_Read_Buf(unsignedcharreg,unsignedchar*ker_buf,unsignedcharbytes)staticvoidSPI_Read_Buf(unsignedcharreg,unsignedchar*buf,intlen){/*spi_write_then_read規(guī)定了tx_cnt+rx_cnt<32*所以對于大量數(shù)據(jù)的讀取,不能使用該函數(shù)*/unsignedchari=0;unsignedchartx_buf[1];unsignedchartx_buf1[len];structspi_transfert[]={{.tx_buf=tx_buf,.len=1,},{.tx_buf=tx_buf1,.rx_buf=buf,.len=len,},};structspi_messagem;for(i=0;i

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉