mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-26 02:44:39 +02:00
atusd firmware now supports setting the TST pin.
- common/io.h: TST is connected to P0_7 - include/at86rf230.h: added test mode registers REG_CONT_TX_0 (0x36) and REG_CONT_TX_1 (0x3d), with their values - atspi/atspi.c (set_test_mode): set or reset TST and the LED - atspi/atspi.c (reset_rf): leave test mode - atspi/atspi.c (test_mode): enter test mode - atspi/atspi.c (main): flash the LED when in test mode - include/atspi/ep0.h (enum atspi_requests), atspi/ep0.c (my_setup): new command ATSPI_TEST to enter test mode - include/atspi/ep0.h (EP0ATSPI_MINOR): bumped protocol to version 0.1 - include/at86rf230.h: corrected comment before TRX_CMD field to indicate that the register is called TRX_STATE
This commit is contained in:
parent
c45f1bb3c8
commit
2337557a8c
@ -18,10 +18,31 @@
|
||||
#include "version.h"
|
||||
|
||||
|
||||
static int in_test_mode = 0;
|
||||
|
||||
|
||||
static void set_test_mode(int on)
|
||||
{
|
||||
in_test_mode = on;
|
||||
if (on) {
|
||||
TST_MODE |= 1 << TST_BIT;
|
||||
TST = 1;
|
||||
LED_MODE |= 1 << LED_BIT;
|
||||
} else {
|
||||
TST = 0;
|
||||
TST_MODE &= ~(1 << TST_BIT);
|
||||
LED_MODE &= ~(1 << LED_BIT);
|
||||
LED = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void reset_rf(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
set_test_mode(0);
|
||||
|
||||
nRST_RF = 0;
|
||||
/*
|
||||
* 11.4.12: min 625 ns.
|
||||
@ -32,6 +53,12 @@ void reset_rf(void)
|
||||
}
|
||||
|
||||
|
||||
void test_mode(void)
|
||||
{
|
||||
set_test_mode(1);
|
||||
}
|
||||
|
||||
|
||||
static void init_io(void)
|
||||
{
|
||||
/*
|
||||
@ -44,6 +71,7 @@ static void init_io(void)
|
||||
* nRST_RF push-pull 1
|
||||
* IRQ_RF open drain 1 (input)
|
||||
* SLP_TR push-pull 0
|
||||
* TST open drain 0
|
||||
*
|
||||
* LED push-pull 0 (set up by boot loader)
|
||||
*
|
||||
@ -63,7 +91,7 @@ static void init_io(void)
|
||||
SLP_TR = 0;
|
||||
SLP_TR_MODE |= 1 << SLP_TR_BIT;
|
||||
|
||||
P0 = 1; /* IRQ_RF = 1; LED = 0; the rest is unused */
|
||||
P0 = 1; /* IRQ_RF = 1; LED = 0; TST = Z; the rest is unused */
|
||||
P3 = 0;
|
||||
|
||||
#if 0
|
||||
@ -104,6 +132,10 @@ void main(void)
|
||||
ep0_init();
|
||||
|
||||
while (1) {
|
||||
if (in_test_mode) {
|
||||
i++;
|
||||
LED = !(i >> 13);
|
||||
}
|
||||
usb_poll();
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
|
||||
extern void reset_rf(void);
|
||||
extern void test_mode(void);
|
||||
|
||||
|
||||
#define debug(...)
|
||||
@ -151,6 +152,11 @@ static __bit my_setup(struct setup_request *setup) __reentrant
|
||||
usb_send(&ep0, buf, 1, NULL, NULL);
|
||||
return 1;
|
||||
|
||||
case ATSPI_TO_DEV(ATSPI_TEST):
|
||||
debug("ATSPI_TEST\n");
|
||||
test_mode();
|
||||
return 1;
|
||||
|
||||
case ATSPI_TO_DEV(ATSPI_REG_WRITE):
|
||||
debug("ATSPI_REG_WRITE\n");
|
||||
nSS = 0;
|
||||
|
@ -30,5 +30,6 @@
|
||||
#define nRST_RF P2_0
|
||||
#define IRQ_RF P0_0
|
||||
#define SLP_TR P2_1
|
||||
#define TST P0_7
|
||||
|
||||
#endif /* !IO_H */
|
||||
|
@ -67,6 +67,9 @@ enum {
|
||||
REG_XAH_CTRL = 0x2c,
|
||||
REG_CSMA_SEED_0 = 0x2d,
|
||||
REG_CSMA_SEED_1 = 0x2e,
|
||||
|
||||
REG_CONT_TX_0 = 0x36,
|
||||
REG_CONT_TX_1 = 0x3d,
|
||||
};
|
||||
|
||||
/* --- TRX_STATUS [7] ------------------------------------------------------ */
|
||||
@ -113,7 +116,7 @@ enum {
|
||||
TRAC_STATUS_INVALID = 7
|
||||
};
|
||||
|
||||
/* --- TRX_CMD [4:0] ----------------------------------------------------- */
|
||||
/* --- TRX_STATE [4:0] ----------------------------------------------------- */
|
||||
|
||||
#define TRX_CMD_SHIFT 0
|
||||
#define TRX_CMD_MASK 7
|
||||
@ -285,4 +288,15 @@ enum {
|
||||
#define CSMA_SEED_1_SHIFT 0
|
||||
#define CSMA_SEED_1_MASK 7
|
||||
|
||||
/* --- REG_CONT_TX_0 [7:0] ------------------------------------------------- */
|
||||
|
||||
#define CONT_TX_MAGIC 0x0f
|
||||
|
||||
/* --- REG_CONT_TX_1 [7:0] ------------------------------------------------- */
|
||||
|
||||
#define CONT_TX_MOD 0x00 /* modulated */
|
||||
#define CONT_TX_M2M 0x10 /* f_CH-2 MHz */
|
||||
#define CONT_TX_M500K 0x80 /* f_CH-0.5 MHz */
|
||||
#define CONT_TX_P500K 0xc0 /* f_CH+0.5 MHz */
|
||||
|
||||
#endif /* !AT86RF230_H */
|
||||
|
@ -23,6 +23,7 @@
|
||||
*
|
||||
* host-> ATSPI_RF_RESET - - 0
|
||||
* ->host ATSPI_POLL_INT - - 1
|
||||
* host-> ATSPI_TEST - - 0
|
||||
*
|
||||
* host-> ATSPI_REG_WRITE value addr 0
|
||||
* ->host ATSPI_REG_READ - addr 1
|
||||
@ -36,10 +37,11 @@
|
||||
* EP0 protocol:
|
||||
*
|
||||
* 0.0 initial release
|
||||
* 0.1 addition of ATSPI_TEST
|
||||
*/
|
||||
|
||||
#define EP0ATSPI_MAJOR 0 /* EP0 protocol, major revision */
|
||||
#define EP0ATSPI_MINOR 0 /* EP0 protocol, minor revision */
|
||||
#define EP0ATSPI_MINOR 1 /* EP0 protocol, minor revision */
|
||||
|
||||
#define HW_TYPE_100813 0 /* 100813 */
|
||||
|
||||
@ -65,6 +67,7 @@ enum atspi_requests {
|
||||
ATSPI_RESET,
|
||||
ATSPI_RF_RESET = 0x10,
|
||||
ATSPI_POLL_INT,
|
||||
ATSPI_TEST,
|
||||
ATSPI_REG_WRITE = 0x20,
|
||||
ATSPI_REG_READ,
|
||||
ATSPI_BUF_WRITE,
|
||||
|
Loading…
Reference in New Issue
Block a user