Add some usb reference material, non functional

This commit is contained in:
Hierophect 2019-07-10 14:26:57 -04:00
parent 7742a97c22
commit a0e6975b9d
4 changed files with 88 additions and 80 deletions

View File

@ -0,0 +1,42 @@
tar extended-remote /dev/tty.usbmodemC2CECCE21
monitor jtag_scan
monitor jtag_scan
monitor jtag_scan
monitor jtag_scan
monitor jtag_scan
monitor swdp_scan
monitor tpwr enable
monitor swdp_scan
monitor tpwr disable
monitor swdp_scan
monitor tpwr disable
monitor swdp_scan
attach 1
attach 1
swdp_scan
monitor swdp_scan
monitor tpwr_enable
monitor tpwr disable
monitor tpwr enable
monitor swdp_scan
attach 1
attach
attach 1
attach 1
monitor swdp_scan
attach 1
monitor swdp_scan
monitor swdp_scan
monitor swdp_scan
attach 1
mon swdp_scan
attach 1
monitor swdp_scan
tar extended-remote /dev/tty.usbmodemC2CECCE21
monitor swdp_scan
monitor tpwr enable
monitor tpwr disable
exit
help
help all
quit

View File

@ -73,6 +73,7 @@ INC += -I../../lib/mp-readline
INC += -I../../lib/tinyusb/src INC += -I../../lib/tinyusb/src
INC += -I../../supervisor/shared/usb INC += -I../../supervisor/shared/usb
DEBUG = 1
#Debugging/Optimization #Debugging/Optimization
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
CFLAGS += -ggdb CFLAGS += -ggdb

View File

@ -28,40 +28,9 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#ifdef BLUETOOTH_SD
#include "nrf_sdm.h"
#endif
#include "nrf.h"
float common_hal_mcu_processor_get_temperature(void) { float common_hal_mcu_processor_get_temperature(void) {
int32_t temp = 0; return 0;
#ifdef BLUETOOTH_SD
uint8_t sd_en = 0;
(void) sd_softdevice_is_enabled(&sd_en);
if (sd_en) {
uint32_t err_code = sd_temp_get(&temp);
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Cannot get temperature"));
}
}
#endif
NRF_TEMP->TASKS_START = 1;
while (NRF_TEMP->EVENTS_DATARDY == 0)
;
NRF_TEMP->EVENTS_DATARDY = 0;
temp = NRF_TEMP->TEMP;
NRF_TEMP->TASKS_STOP = 1;
return temp / 4.0f;
} }
uint32_t common_hal_mcu_processor_get_frequency(void) { uint32_t common_hal_mcu_processor_get_frequency(void) {
@ -70,6 +39,6 @@ uint32_t common_hal_mcu_processor_get_frequency(void) {
void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) { void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) {
for (int i=0; i<2; i++) { for (int i=0; i<2; i++) {
((uint32_t*) raw_id)[i] = NRF_FICR->DEVICEID[i]; ((uint32_t*) raw_id)[i] = 0;
} }
} }

View File

@ -24,66 +24,62 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
// #include "nrfx.h"
// #include "nrfx_power.h" #include "tick.h"
//#include "tick.h"
#include "supervisor/usb.h" #include "supervisor/usb.h"
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"
#include "lib/mp-readline/readline.h" #include "lib/mp-readline/readline.h"
#include "stm32f4xx.h"
// #ifdef SOFTDEVICE_PRESENT
// #include "nrf_sdm.h"
// #include "nrf_soc.h"
// #endif
// tinyusb function that handles power event (detected, ready, removed)
// We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled.
//extern void tusb_hal_nrf_power_event(uint32_t event);
void init_usb_hardware(void) { void init_usb_hardware(void) {
// Init the LED on PD14
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
GPIOD->MODER |= GPIO_MODER_MODE14_0;
// // 2 is max priority (0, 1 are reserved for SD) // USB Clock init
// NVIC_SetPriority(USBD_IRQn, 2); // PLL input- 8 MHz (External oscillator clock; HSI clock tolerance isn't
// tight enough- 1%, need 0.25%)
// VCO input- 1 to 2 MHz (2 MHz, M = 4)
// VCO output- 100 to 432 MHz (144 MHz, N = 72)
// Main PLL out- <= 180 MHz (18 MHz, P = 3- divides by 8)
// USB PLL out- 48 MHz (Q = 3)
RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSE | (3 << RCC_PLLCFGR_PLLQ_Pos) | \
(3 << RCC_PLLCFGR_PLLP_Pos) | (72 << RCC_PLLCFGR_PLLN_Pos) | \
(4 << RCC_PLLCFGR_PLLM_Pos);
// // USB power may already be ready at this time -> no event generated // Wait for external clock to become ready
// // We need to invoke the handler based on the status initially for the first call RCC->CR |= RCC_CR_HSEON;
// static bool first_call = true; while(!(RCC->CR & RCC_CR_HSERDY_Msk));
// uint32_t usb_reg;
// #ifdef SOFTDEVICE_PRESENT // Wait for PLL to become ready
// uint8_t sd_en = false; RCC->CR |= RCC_CR_PLLON;
// (void) sd_softdevice_is_enabled(&sd_en); while(!(RCC->CR & RCC_CR_PLLRDY_Msk));
// if ( sd_en ) { // Switch clocks!
// sd_power_usbdetected_enable(true); RCC->CFGR |= RCC_CFGR_SW_1;
// sd_power_usbpwrrdy_enable(true);
// sd_power_usbremoved_enable(true);
// sd_power_usbregstatus_get(&usb_reg); // Notify runtime of frequency change.
// }else SystemCoreClockUpdate();
// #endif
// {
// // Power module init
// const nrfx_power_config_t pwr_cfg = { 0 };
// nrfx_power_init(&pwr_cfg);
// // Register tusb function as USB power handler #if CFG_TUSB_OS == OPT_OS_NONE
// const nrfx_power_usbevt_config_t config = { .handler = (nrfx_power_usb_event_handler_t) tusb_hal_nrf_power_event }; // 1ms tick timer
// nrfx_power_usbevt_init(&config); SysTick_Config(SystemCoreClock / 1000);
#endif
// nrfx_power_usbevt_enable(); RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN;
// usb_reg = NRF_POWER->USBREGSTATUS; // USB Pin Init
// } // PA9- VUSB, PA10- ID, PA11- DM, PA12- DP
// PC0- Power on
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
GPIOA->MODER |= GPIO_MODER_MODE9_1 | GPIO_MODER_MODE10_1 | \
GPIO_MODER_MODE11_1 | GPIO_MODER_MODE12_1;
GPIOA->AFR[1] |= (10 << GPIO_AFRH_AFSEL9_Pos) | \
(10 << GPIO_AFRH_AFSEL10_Pos) | (10 << GPIO_AFRH_AFSEL11_Pos) | \
(10 << GPIO_AFRH_AFSEL12_Pos);
// if ( first_call ) { // Pullup required on ID, despite the manual claiming there's an
// first_call = false; // internal pullup already (page 1245, Rev 17)
// if ( usb_reg & POWER_USBREGSTATUS_VBUSDETECT_Msk ) { GPIOA->PUPDR |= GPIO_PUPDR_PUPD10_0;
// tusb_hal_nrf_power_event(NRFX_POWER_USB_EVT_DETECTED);
// }
// if ( usb_reg & POWER_USBREGSTATUS_OUTPUTRDY_Msk ) {
// tusb_hal_nrf_power_event(NRFX_POWER_USB_EVT_READY);
// }
// }
} }