音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(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ù)
用過NRF905進(jìn)來看看!
 
2樓: >>參與討論
TragicJun
這個(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
續(xù)
在接受時(shí),CD檢測(cè)到總是被拉高,但是AM和DR總是不會(huì)被拉高,不知道什么原因,可以發(fā)送應(yīng)該也可以接受才是!

4樓: >>參與討論
chunyang
仔細(xì)看手冊(cè),收發(fā)設(shè)置是不同的
設(shè)置正確就一定能用。

5樓: >>參與討論
TragicJun
有不同嗎,我怎么沒看出來啊,您能指出來嗎?
 
6樓: >>參與討論
TragicJun
是不是時(shí)間上控制不對(duì)呢?
我測(cè)試了,發(fā)送時(shí)正確,可以檢測(cè)到發(fā)送端的DR被拉高,就是說發(fā)送完畢了?但是在接受端,AM和DR始終都是低,不知道為什么會(huì)這樣??我的發(fā)送地址使用的是默認(rèn)的E7!!

7樓: >>參與討論
TragicJun
經(jīng)過一番調(diào)試,已經(jīng)解決了,呵 呵!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教485通信的問題
I/0模擬SPI時(shí)序問題!
這個(gè)時(shí)序圖怎么看!
關(guān)于485的隔離問題.
485總線拓?fù)浣Y(jié)構(gòu)的討論
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)