cc2530 spi例程

2019-07-31 17:07发布

本帖最后由 sinanjj 于 2011-11-5 13:38 编辑

// master
#include <ioCC2530.h>
void main()
{
        CLKCONCMD = 0x80; while (CLKCONSTA != 0x80);        // 32MHz
        // SPI Master Mode
        PERCFG |= 0x02;        // map USART1 to its alternative 2 location. P1_4: SSN, P1_5: SCK, P1_6: MOSI, P1_7: MISO
        P1SEL |= 0xE0;        // P1_5, P1_6, and P1_7 are peripherals
        P1SEL &= ~0x10;        // P1_4 is GPIO (SSN)
        P1DIR |= 0x10;        // SSN is set as output

        U1BAUD = 0x00; U1GCR |= 0x11;        // Set baud rate to max (system clock frequency / 8)
        U1CSR &= ~0xA0;        // SPI Master Mode
//        U1CSR &= ~0x80; U1CSR |= 0x20;        // SPI Slave Mode
        U1GCR &= ~0xC0; U1GCR |= 0x20;        // MSB

        for(;;) {
                P1_4 = 0;        // SSN LOW
                U1DBUF = 0x55; while (!(U1CSR&0x02)); U1CSR &= 0xFD;
                U1DBUF = 0x00; while (!(U1CSR&0x02)); U1CSR &= 0xFD;
                unsigned char temp = U1DBUF;
                P1_4 = 1;        // SSN high
        }
}

// slave
#include <ioCC2530.h>
void main()
{
        CLKCONCMD = 0x80; while (CLKCONSTA != 0x80);        // 32MHz
        PERCFG |= 0x02;        // map USART1 to its alternative 2 location. P1_4: SSN, P1_5: SCK, P1_6: MOSI, P1_7: MISO
        P1SEL |= 0xF0;        // P1_4, P1_5, P1_6, and P1_7 are peripherals

        U1BAUD = 0x00; U1GCR |= 0x11;        // Set baud rate to max (system clock frequency / 8)
        U1CSR &= ~0x80; U1CSR |= 0x20;        // SPI Slave Mode
        U1GCR &= ~0xC0; U1GCR |= 0x20;        // MSB

        for(;;) {
                U1DBUF = 0x88;
                while (!(U1CSR&0x04)); U1CSR &= 0xFB;
                unsigned char temp = U1DBUF;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。