This program enables the use of the Semtech "SX1276 Starter Kit A" application to be used with the FRDM-KL25Z board. At the time of writing this, this app was available on Semtech's SX1276 page, in the "Docs & Resources"* tab, via the link "PC GUI (1.0.0Beta5)". This program was tested with the FRDM-KL25Z board, with a Modtronix inAir9 SX1276 board mounted in a Modtronix SHD3I shield. The inAir9 module is mounted in iMod port 3 of the SHD3I module. The SHD3I shield is mounted on the FRDM-KL25Z board.
Dependencies: SX127x_modtronix USBDevice_Semtech_GUI mbed
Fork of hid_test by
Revision 2:1972097c22d1, committed 2015-02-16
- Comitter:
- modtronix
- Date:
- Mon Feb 16 02:14:45 2015 +0000
- Parent:
- 1:d25ba61cd2f3
- Commit message:
- Published program
Changed in this revision
diff -r d25ba61cd2f3 -r 1972097c22d1 SX127x.lib --- a/SX127x.lib Wed Apr 30 23:06:39 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/dudmuck/code/SX127x/#fdae76e1215e
diff -r d25ba61cd2f3 -r 1972097c22d1 SX127x_modtronix.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SX127x_modtronix.lib Mon Feb 16 02:14:45 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/modtronix/code/SX127x_modtronix/#3d148697c0d3
diff -r d25ba61cd2f3 -r 1972097c22d1 USBDevice.lib --- a/USBDevice.lib Wed Apr 30 23:06:39 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/mbed_official/code/USBDevice/#5b7d31d9d3f3
diff -r d25ba61cd2f3 -r 1972097c22d1 USBDevice_Semtech_GUI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/USBDevice_Semtech_GUI.lib Mon Feb 16 02:14:45 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/modtronix/code/USBDevice_Semtech_GUI/#7e7597ba0fac
diff -r d25ba61cd2f3 -r 1972097c22d1 main.cpp --- a/main.cpp Wed Apr 30 23:06:39 2014 +0000 +++ b/main.cpp Mon Feb 16 02:14:45 2015 +0000 @@ -4,9 +4,49 @@ //#define _DEBUG_ -// pin: 3 8 1 7 10 12 5 20 18 -// mosi, miso, sclk, cs, rst, dio0, dio1, fctx, fcps -SX127x radio(PTD2, PTD3, PTD1, PTD0, PTD5, PTA13, PTD4, PTC9, PTC8); +/* + * This program is a modified version of the "hid_test" application by Wayne Roberts. All credits go + * to Wayne for writing it, I just did some minor modiciations! + * + * The program was tested with the FRDM-KL25Z board, with a Modtronix inAir9 SX1276 board mounted in + * a Modtronix SHD3I shield. The inAir9 module is mounted in iMod port 3 of the SHD3I module. The + * SHD3I shield is mounted on the FRDM-KL25Z board. + * It enables the use of the Semtech "SX1276 Starter Kit A" application to be used with this board. + * At the time of writing this, this app was available on Semtech's SX1276 page, in the "Docs & Resources" + * tab, via the link "PC GUI (1.0.0Beta5)". + * This app can be used for sending and receiving data via the SX1276. To use it: + * - Plug the FRDM-KL25Z into the PC via the USB marked "USB KL25Z" + * - Start Semtech "SX1276 Starter Kit A" app on PC + * - App should connect to board, enabling it to control board. + * + * ========== Firmware for KL25Z ========== + * The default firmware listed on mbed.org puts a clock pulse on pin A5. To fix this, use alternative + * firmware (or unsolder resistor R24). + * - Download "OpenSDA Firmware" from http://www.pemicro.com/opensda/ + * - Put KL25Z into bootloader mode (hold down button while plugging in SDA USB). + * - Drag "MSD-DEBUG-FRDM-KL25Z_Pemicro_v114.SDA" file onto it. + * - Reset KL25Z. + * - If the USB drivers do not automatically install, download and run "Windows USB Drivers" from + * www.pemicro.com/opensda. After this, when you plug in the KL25Z next time, all drivers should + * install correctly. + */ + +#define TARGET_KL25Z_SHD3I_INAIR8 /* FRDM-KL25Z + Modtronix inAir9 SX1276 board + SHD3I daughter board */ + +//Defines for the FRDM-KL25Z board, with Modtronix SHD3I with an inAir9 SX1276 module mounted in it. +#ifdef TARGET_KL25Z_SHD3I_INAIR8 +//SCLK=D13, MISO=D12, MOSI=D11 +//CS=D7, Reset=A5 +//DIO0=D2, DIO1=D8, DIO2=D4, DIO3=A4, DIO4=N.C., DIO5=D3 +// mosi, miso, sclk, cs, rst, dio0, dio1 +SX127x radio(D11, D12, D13, D7, A5, D2, D8); +#else +// pin: 3 8 1 7 10 12 5 +// mosi, miso, sclk, cs, rst, dio0, dio1 +// D11 D12 D13 D10 D9 D8 D2 +SX127x radio(PTD2, PTD3, PTD1, PTD0, PTD5, PTA13, PTD4); +#endif + #ifdef _DEBUG_ #include "sx127x_lora.h" SX127x_lora lora(radio); @@ -66,6 +106,40 @@ char verbose = 0; #endif /* _DEBUG_ */ +//Following code is from V7 +//DigitalOut rfsw1(PTC8); +//DigitalOut rfsw2(PTC9); + +void rfsw_callback() +{ + /* + if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) { // start of transmission + if (radio.HF) { + if (radio.RegPaConfig.bits.PaSelect) { // if PA_BOOST + rfsw2 = 0; + rfsw1 = 1; + } else { // RFO to power amp + rfsw2 = 1; + rfsw1 = 0; + } + } else { + // todo: sx1276 + } + } else if (radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER || radio.RegOpMode.bits.Mode == RF_OPMODE_CAD) { // start of reception + if (radio.HF) { + rfsw2 = 1; + rfsw1 = 1; + } else { + // todo: sx1276 + } + } else { // RF switch shutdown + rfsw2 = 0; + rfsw1 = 0; + } + */ +} + + void HidDecodeCommand( uint8_t *hidReport, tHidCommand *cmd ) { cmd->Cmd = hidReport[0]; @@ -161,14 +235,18 @@ // cmd.CmdData[0] = Pin id switch( cmd.CmdData[0] ) { case 11: // FEM_CPS_PIN - dataBuffer[0] = radio.femcps; + //MODTRONIX modified, we do not have a femcps pin + //dataBuffer[0] = radio.femcps; + dataBuffer[0] = 0; #ifdef _DEBUG_ if (verbose) printf("HID_SK_GET_PIN femcps:%02x\r\n", dataBuffer[0]); #endif /* _DEBUG_ */ break; case 12: // FEM_CTX_PIN - dataBuffer[0] = radio.femctx; + //MODTRONIX modified, we do not have a femctx pin + //dataBuffer[0] = radio.femctx; + dataBuffer[0] = 0; #ifdef _DEBUG_ if (verbose) printf("HID_SK_GET_PIN femctx:%02x\r\n", dataBuffer[0]); @@ -192,14 +270,16 @@ // ignore LEDs break; case 11: // FEM_CPS_PIN - radio.femcps = cmd.CmdData[1]; + //MODTRONIX modified, we do not have a femcps pin + //radio.femcps = cmd.CmdData[1]; #ifdef _DEBUG_ if (verbose) printf("HID_SK_SET_PIN femcps:%d\r\n", (int)radio.femcps); #endif /* _DEBUG_ */ break; case 12: // FEM_CTX_PIN - radio.femctx = cmd.CmdData[1]; + //MODTRONIX modified, we do not have a femctx pin + //radio.femctx = cmd.CmdData[1]; #ifdef _DEBUG_ if (verbose) printf("HID_SK_SET_PIN femctx:%d\r\n", (int)radio.femctx); @@ -609,6 +689,9 @@ pc.baud(57600); pc.printf("\r\nstart\r\n"); #endif /* _DEBUG_ */ + + //Required for V7 of SX127x library, but V7 doesn't work for this program! + radio.rf_switch.attach(rfsw_callback); while (1) { //try to read a msg
diff -r d25ba61cd2f3 -r 1972097c22d1 mbed.bld --- a/mbed.bld Wed Apr 30 23:06:39 2014 +0000 +++ b/mbed.bld Mon Feb 16 02:14:45 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/6473597d706e \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/e188a91d3eaa \ No newline at end of file