moved rng to LLD directory.
removed rng power control (doesn't exist in nrf52, wasn't documented in nrf51) renamed peripheral to start at 0
This commit is contained in:
parent
3db81f7f03
commit
6423c3dabe
|
@ -9,9 +9,50 @@
|
|||
|
||||
#define LED_EXT 14
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Command Random
|
||||
*/
|
||||
#define RANDOM_BUFFER_SIZE 1024
|
||||
static uint8_t random_buffer[RANDOM_BUFFER_SIZE];
|
||||
|
||||
static void cmd_random(BaseSequentialStream *chp, int argc, char *argv[]) {
|
||||
uint16_t size = 16;
|
||||
uint16_t i = 0;
|
||||
uint8_t nl = 0;
|
||||
|
||||
if (argc > 0) {
|
||||
size = atoi(argv[0]);
|
||||
}
|
||||
|
||||
if (size > RANDOM_BUFFER_SIZE) {
|
||||
chprintf(chp, "random: maximum size is %d.\r\n", RANDOM_BUFFER_SIZE);
|
||||
return;
|
||||
}
|
||||
|
||||
chprintf(chp, "Fetching %d random byte(s):\r\n", size);
|
||||
|
||||
rngStart(&RNGD1, NULL);
|
||||
rngWrite(&RNGD1, random_buffer, size, TIME_INFINITE);
|
||||
rngStop(&RNGD1);
|
||||
|
||||
for (i = 0 ; i < size ; i++) {
|
||||
chprintf(chp, "%02x ", random_buffer[i]);
|
||||
if ((nl = (((i+1) % 20)) == 0))
|
||||
chprintf(chp, "\r\n");
|
||||
}
|
||||
if (!nl)
|
||||
chprintf(chp, "\r\n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static THD_WORKING_AREA(shell_wa, 1024);
|
||||
|
||||
static const ShellCommand commands[] = {
|
||||
{"random", cmd_random},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file NRF51/NRF518221/rng_lld.c
|
||||
* @brief NRF51 RNG subsystem low level driver source.
|
||||
* @file NRF5/LLD/hal_rng_lld.c
|
||||
* @brief NRF5 RNG subsystem low level driver source.
|
||||
*
|
||||
* @addtogroup RNG
|
||||
* @{
|
||||
|
@ -41,8 +41,8 @@ static const RNGConfig default_config = {
|
|||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/** @brief RNG1 driver identifier.*/
|
||||
#if NRF5_RNG_USE_RNG1 || defined(__DOXYGEN__)
|
||||
/** @brief RNGD1 driver identifier.*/
|
||||
#if NRF5_RNG_USE_RNG0 || defined(__DOXYGEN__)
|
||||
RNGDriver RNGD1;
|
||||
#endif
|
||||
|
||||
|
@ -87,9 +87,6 @@ void rng_lld_start(RNGDriver *rngp) {
|
|||
if (rngp->config == NULL)
|
||||
rngp->config = &default_config;
|
||||
|
||||
/* Power on peripheric */
|
||||
rng->POWER = 1;
|
||||
|
||||
/* Configure digital error correction */
|
||||
if (rngp->config->digital_error_correction)
|
||||
rng->CONFIG |= RNG_CONFIG_DERCEN_Msk;
|
||||
|
@ -117,9 +114,8 @@ void rng_lld_start(RNGDriver *rngp) {
|
|||
void rng_lld_stop(RNGDriver *rngp) {
|
||||
NRF_RNG_Type *rng = rngp->rng;
|
||||
|
||||
/* Stop and power off peripheric */
|
||||
/* Stop peripheric */
|
||||
rng->TASKS_STOP = 1;
|
||||
rng->POWER = 0;
|
||||
}
|
||||
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file NRF51/NRF51822/rng_lld.h
|
||||
* @brief NRF51 RNG subsystem low level driver header.
|
||||
* @file NRF5/LLD/hal_rng_lld.h
|
||||
* @brief NRF5 RNG subsystem low level driver header.
|
||||
*
|
||||
* @addtogroup RNG
|
||||
* @{
|
||||
|
@ -40,28 +40,19 @@
|
|||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief RNG1 driver enable switch.
|
||||
* @details If set to @p TRUE the support for RNG1 is included.
|
||||
* @brief RNGD1 driver enable switch.
|
||||
* @details If set to @p TRUE the support for RNGD1 is included.
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(NRF5_RNG_USE_RNG1) || defined(__DOXYGEN__)
|
||||
#define NRF5_RNG_USE_RNG1 FALSE
|
||||
#if !defined(NRF5_RNG_USE_RNG0) || defined(__DOXYGEN__)
|
||||
#define NRF5_RNG_USE_RNG0 FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief RNG1 driver enable switch.
|
||||
* @details If set to @p TRUE the support for RNG1 is included.
|
||||
* @note The default is @p FALSE.
|
||||
* @brief RNG interrupt priority level setting for RNG0.
|
||||
*/
|
||||
#if !defined(NRF5_RNG_USE_RNG1) || defined(__DOXYGEN__)
|
||||
#define NRF5_RNG_USE_POWER_ON_WRITE FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief RNG1 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(NRF5_RNG_RNG1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define NRF5_RNG_RNG1_IRQ_PRIORITY 3
|
||||
#if !defined(NRF5_RNG_RNG0_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define NRF5_RNG_RNG0_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -69,9 +60,13 @@
|
|||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF5_RNG_USE_RNG1 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF5_RNG_RNG1_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to RNG1"
|
||||
#if NRF5_RNG_USE_RNG0 == FALSE
|
||||
#error "Requesting RNG driver, but no RNG peripheric attached"
|
||||
#endif
|
||||
|
||||
#if NRF5_RNG_USE_RNG0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF5_RNG_RNG0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to RNG0"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
|
@ -96,9 +91,9 @@ typedef struct {
|
|||
* speed advantage, but may result in a statistical distribution
|
||||
* that is not perfectly uniform.
|
||||
*
|
||||
* @note On average, it take 167µs to get a byte without digitial
|
||||
* error correction and 677µs with, but no garantee is made
|
||||
* on the necessary time to generate one byte.
|
||||
* @note For nRF51, on average, it take 167µs to get a byte without
|
||||
* digitial error correction and 677µs with, but no garantee
|
||||
* is made on the necessary time to generate one byte.
|
||||
*/
|
||||
uint8_t digital_error_correction:1;
|
||||
/**
|
||||
|
@ -148,9 +143,9 @@ struct RNGDriver {
|
|||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF5_RNG_USE_RNG1 && !defined(__DOXYGEN__)
|
||||
#if NRF5_RNG_USE_RNG0 && !defined(__DOXYGEN__)
|
||||
extern RNGDriver RNGD1;
|
||||
#endif /* NRF5_RNG_USE_RNG1 */
|
||||
#endif /* NRF5_RNG_USE_RNG0 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
|
@ -275,8 +275,8 @@ void st_lld_init(void) {
|
|||
NRF_TIMER0->TASKS_CLEAR = 1;
|
||||
|
||||
/*
|
||||
* Using 32-bit mode with prescaler 16 configures this
|
||||
* timer with a 1MHz clock.
|
||||
* Using 32-bit mode with prescaler 1/16 configures this
|
||||
* timer with a 1MHz clock, reducing power consumption.
|
||||
*/
|
||||
NRF_TIMER0->BITMODE = TIMER_BITMODE_BITMODE_32Bit;
|
||||
NRF_TIMER0->PRESCALER = 4;
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file st_lld.h
|
||||
* @brief NRF51822 ST subsystem low level driver header.
|
||||
* @file NRF5/LLD/st_lld.h
|
||||
* @brief NRF5 ST subsystem low level driver header.
|
||||
* @details This header is designed to be include-able without having to
|
||||
* include other files from the HAL.
|
||||
*
|
||||
|
|
|
@ -106,15 +106,15 @@
|
|||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF5_QEI_USE_QDEC0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF5_QEI_QDEC0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to QDEC0"
|
||||
#endif
|
||||
|
||||
#if NRF5_QEI_USE_QDEC0 == FALSE
|
||||
#error "Requesting QEI driver, but no QDEC peripheric attached"
|
||||
#endif
|
||||
|
||||
#if NRF5_QEI_USE_QDEC0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF5_QEI_QDEC0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to QDEC0"
|
||||
#endif
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
|
|
|
@ -32,7 +32,7 @@ ifneq ($(findstring HAL_USE_WDG TRUE,$(HALCONF)),)
|
|||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c
|
||||
endif
|
||||
ifneq ($(findstring HAL_USE_RNG TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_rng_lld.c
|
||||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_rng_lld.c
|
||||
endif
|
||||
ifneq ($(findstring HAL_USE_PWM TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_pwm_lld.c
|
||||
|
@ -53,7 +53,7 @@ PLATFORMSRC = ${CHIBIOS}/os/hal/ports/common/ARMCMx/nvic.c \
|
|||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_adc_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_gpt_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_wdg_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_rng_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_rng_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_pwm_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF51822/hal_qei_lld.c
|
||||
endif
|
||||
|
|
|
@ -12,12 +12,16 @@ endif
|
|||
ifneq ($(findstring HAL_USE_SERIAL TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_serial_lld.c
|
||||
endif
|
||||
ifneq ($(findstring HAL_USE_RNG TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += ${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_rng_lld.c
|
||||
endif
|
||||
else
|
||||
PLATFORMSRC = ${CHIBIOS}/os/hal/ports/common/ARMCMx/nvic.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/NRF52832/hal_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_pal_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_serial_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_st_lld.c
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_st_lld.c \
|
||||
${CHIBIOS_CONTRIB}/os/hal/ports/NRF5/LLD/hal_rng_lld.c
|
||||
endif
|
||||
|
||||
# Required include directories
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
#define NRF5_RNG_USE_RNG1 TRUE
|
||||
#define NRF5_RNG_USE_RNG0 TRUE
|
||||
#define NRF5_SERIAL_USE_UART0 TRUE
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue