Sean Burford
/
kl25z_mrf89xam9a
Using SPI to talk to the MRF89X radio module (on an MRF89XAM9A board).
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 // SPI to the MRF89X. 00004 SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk 00005 DigitalOut cs_fifo(PTC12); 00006 DigitalOut cs_conf(PTC17); 00007 DigitalIn mrf_reset(PTA16); // Hi-Z 00008 DigitalIn mrf_irq0(PTC16); 00009 DigitalIn mrf_irq1(PTC13); 00010 00011 // RGB LED. 00012 PwmOut rled(LED_RED); 00013 PwmOut gled(LED_GREEN); 00014 PwmOut bled(LED_BLUE); 00015 00016 Serial pc(USBTX, USBRX); 00017 00018 // Local copy of MTF89X register contents. 00019 unsigned char regs[32]; 00020 unsigned char regs2[32]; 00021 00022 int main() { 00023 // Deselect chip select. 00024 cs_fifo = 1; 00025 cs_conf = 1; 00026 00027 // RGB: Red 00028 rled = 0.5; 00029 gled = 1; 00030 bled = 1; 00031 00032 // Setup the spi for 8 bit data mode 0. 00033 spi.format(8, 0); 00034 spi.frequency(1000000); 00035 00036 // RGB: Orange 00037 rled = 0.5; 00038 gled = 0.5; 00039 bled = 1; 00040 00041 // Read the MRF registers. 00042 const unsigned char start = 0x00; // Bit 0 00043 const unsigned char read = 0x40; // Bit 1 00044 const unsigned char stop = 0x00; // Bit t 00045 cs_conf = 0; 00046 for (unsigned char addr = 0; addr < 32; addr++) { 00047 spi.write(start | read | (addr << 1) | stop); 00048 regs[addr] = spi.write(0); 00049 } 00050 cs_conf = 1; 00051 wait_ms(10); 00052 cs_conf = 0; 00053 for (unsigned char addr = 0; addr < 32; addr++) { 00054 spi.write(start | read | (addr << 1) | stop); 00055 regs2[addr] = spi.write(0); 00056 } 00057 cs_conf = 1; 00058 00059 for (unsigned char addr = 0; addr < 32; addr++) { 00060 pc.printf("%02X A %02X B %02X\r\n", addr, regs[addr], regs2[addr]); 00061 } 00062 00063 // RGB: green. 00064 rled = 1; 00065 gled = 1; 00066 bled = 1; 00067 while(1) { 00068 gled = 0.5; 00069 wait(0.2); 00070 gled = 1; 00071 wait(0.2); 00072 } 00073 }
Generated on Sun Jul 17 2022 21:57:28 by 1.7.2