|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
用過nrf905進(jìn)來看看。 |
| 作者:TragicJun 欄目:通信技術(shù) |
| 2樓: | >>參與討論 |
| 作者: TragicJun 于 2006/10/27 19:59:00 發(fā)布:
這個(gè)程序可以發(fā)送但是不可以接受,不知道什么問題! #include "SPCE061A.h" //*************************************************************************** // 定義SPI接口命令字 //*************************************************************************** #define W_CONFIG 0x00//寫配置寄存器,默認(rèn)從0字節(jié)開始 #define R_CONFIG 0x80//讀配置寄存器,默認(rèn)從0字節(jié)開始 #define W_TX_PAYLOAD 0x20//寫發(fā)送數(shù)據(jù),從0地址開始 #define R_TX_PAYLOAD 0x21//讀發(fā)送數(shù)據(jù),從0地址開始 #define W_TX_ADDRESS 0x22//寫發(fā)送地址,從0地址開始 #define R_TX_ADDRESS 0x23//讀發(fā)送地址,從0地址開始 #define R_RX_PAYLOAD 0x24//讀接受數(shù)據(jù),從0地址開始 //*************************************************************************** // 定義PTR8000與MCU連接I/O口(均與IOA口相連) //*************************************************************************** #define TX_EN 0x0001 #define TRX_CE 0x0100 #define PWR 0x0002 #define AM 0x0400 #define DR 0x0008 #define CD 0x0004 #define SPI_MISO 0x0800 #define SPI_MOSI 0x0010 #define SPI_SCK 0x1000 #define SPI_CSN 0x0020 //*************************************************************************** #define ONE 0x6c #define TWO 0x20 #define THREE 0x44 #define FOUR 0x20 #define FIVE 0x20 #define SIX 0xe7 #define SEVEN 0xe7 #define EIGHT 0xe7 #define NINE 0xe7 #define TEN 0xe7 //*************************************************************************** // MCU輸出端口設(shè)置函數(shù) //*************************************************************************** void CLR(CHAR PORT)//置端口PORT低 { *P_IOA_Data&=~PORT; } void SET(CHAR PORT)//置端口PORT高 { *P_IOA_Data|=PORT; } //*************************************************************************** // 工作模式轉(zhuǎn)換函數(shù) //*************************************************************************** void PowerDown() { CLR(PWR); } void StandBy() { SET(PWR); CLR(TRX_CE); CLR(TX_EN); } void SendOn() { SET(PWR); SET(TRX_CE); SET(TX_EN); } void ReadOn() { SET(PWR); SET(TRX_CE); CLR(TX_EN); } //*************************************************************************** // MCU端和PTR8000初始化 //*************************************************************************** void InitialSystem() { *P_IOA_Data=0xffff;//設(shè)置好I/0口 *P_IOA_Attrib=0xffff; *P_IOA_Dir=0x1133; StandBy(); Configuration(); __asm("INT OFF"); *P_INT_Ctrl=0x0004;//開IRQ5_2Hz中斷,每0.5秒清一次看門狗 __asm("IRQ ON"); } //**************************************************************************** // 通過SPI接口寫一個(gè)字節(jié)數(shù)據(jù)(MCU->PTR8000) //**************************************************************************** void SPI_SendByte(CHAR sendbyte) { int i; for(i=0;i<8;i++) { CLR(SPI_SCK);//產(chǎn)生一個(gè)SCK上升沿來發(fā)送一個(gè)數(shù)據(jù) if(sendbyte&0x80)//開始往MISI口送數(shù)據(jù) SET(SPI_MOSI); else CLR(SPI_MOSI); SET(SPI_SCK);//產(chǎn)生一個(gè)SCK上升來發(fā)送一個(gè)數(shù)據(jù) sendbyte<<=1;//senddata左移一位準(zhǔn)備下位傳送 } } //**************************************************************************** // 通過SPI接口讀一個(gè)字節(jié)數(shù)據(jù)(PTR8000->MCU) //**************************************************************************** CHAR SPI_ReadByte() { int i; CHAR getbyte=0; for(i=0;i<8;i++) { CLR(SPI_SCK);//產(chǎn)生一個(gè)SCK上升沿來接受一個(gè)數(shù)據(jù) getbyte<<=1;//坐移一位準(zhǔn)備接受下一位數(shù)據(jù) SET(SPI_SCK);//產(chǎn)生一個(gè)SCK上升沿來接受一個(gè)數(shù)據(jù) if(*P_IOA_Data&SPI_MISO) getbyte|=1; else getbyte|=0; } return getbyte; } //****************************************************************************** // |
|
| 3樓: | >>參與討論 |
| 作者: TragicJun 于 2006/10/27 20:00:00 發(fā)布:
續(xù) 在接受時(shí),CD檢測(cè)到總是被拉高,但是AM和DR總是不會(huì)被拉高,不知道什么原因,可以發(fā)送應(yīng)該也可以接受才是! |
|
| 4樓: | >>參與討論 |
| 作者: chunyang 于 2006/10/27 20:50:00 發(fā)布:
仔細(xì)看手冊(cè),收發(fā)設(shè)置是不同的 設(shè)置正確就一定能用。 |
|
| 5樓: | >>參與討論 |
| 作者: TragicJun 于 2006/10/27 21:13:00 發(fā)布:
有不同嗎,我怎么沒看出來啊,您能指出來嗎? |
|
| 6樓: | >>參與討論 |
| 作者: TragicJun 于 2006/10/27 22:47:00 發(fā)布:
是不是時(shí)間上控制不對(duì)呢? 我測(cè)試了,發(fā)送時(shí)正確,可以檢測(cè)到發(fā)送端的DR被拉高,就是說發(fā)送完畢了?但是在接受端,AM和DR始終都是低,不知道為什么會(huì)這樣??我的發(fā)送地址使用的是默認(rèn)的E7!! |
|
| 7樓: | >>參與討論 |
| 作者: TragicJun 于 2006/10/28 2:10:00 發(fā)布:
經(jīng)過一番調(diào)試,已經(jīng)解決了,呵 呵! |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |