//! Turns off the BDM interface //! void bdm_interfaceOff( void ) { #if (HW_CAPABILITY&CAP_CFVx) #ifndef SPI1C1 #define SPI1C1 SPIC1 #endif SPI1C1 = 0; // Disable SPI1 #endif #if (HW_CAPABILITY&CAP_FLASH) (void)bdmSetVpp(BDM_TARGET_VPP_OFF); #endif #ifdef TA_3STATE TA_3STATE(); #endif #ifdef JTAG_DRV_DISABLE JTAG_DRV_DISABLE(); #endif #ifdef BKPT_DISABLE BKPT_DISABLE(); #endif #ifdef RESET_IN_FINI RESET_IN_FINI(); #endif #ifdef RESET_OUT_FINI RESET_OUT_FINI(); #endif #ifdef CF_DRV_DISABLE CF_DRV_DISABLE(); #endif #ifdef TCLK_DISABLE TCLK_DISABLE(); #endif #ifdef DSCLK_DRV_DISABLE DSCLK_DRV_DISABLE(); #endif #ifdef TRST_3STATE TRST_3STATE(); #endif #ifdef TDI_DISABLE TDI_DISABLE(); #endif #ifdef BDM_3STATE BDM_3STATE(); #endif #ifdef TCLK_CTL_DISABLE TCLK_CTL_DISABLE(); #endif #ifdef SWD_OUT_FINI SWD_OUT_FINI(); #endif #ifdef SWCLK_OUT_FINI SWCLK_OUT_FINI(); #endif #ifdef SWD_IN_FINI SWD_IN_FINI(); #endif // SPIxC1 = SPIxC1_OFF; // Disable SPI (MOSI/MISO pins now GPIO) }
//! Initialises the CF BDM interface to default state (including speed) //! void bdmcf_init(void) { DSI_OUT_PER = 1; DSCLK_OUT_PER = 1; #ifdef DSCLK_DRV_PER DSCLK_DRV_PER = 1; // Holds DSCLK driver disabled when unused #endif BKPT_OUT_PER = 1; // Holds BKPT_OUT inactive when unused #ifdef TA_OUT_PER TA_OUT_PER = 1; // Holds TA_OUT inactive when unused #endif RESET_IN_PER = 1; // Needed for input level translation to 5V RESET_OUT_PER = 1; // Holds RESET_OUT inactive when unused #ifdef ALLPST_IN_PER ALLPST_IN_PER = 1; // Needed for input level translation to 5V #endif #ifdef PST_IN_ENABLE PST_IN_ENABLE(); // OSBDM boards #endif // Set up inputs DSO_IN_DDR = 0; RESET_IN_DDR = 0; #ifdef ALLPST_IN_DDR ALLPST_IN_DDR = 0; #endif DSCLK_DRV_ENABLE(); // DSCLK is driven #ifdef SPI2C1 SPI2C1 = SPIxC1_OFF; // SPI2 is unused (Port pin is used for BKPT*) #endif (void)spi_setSpeed(0); SPIxC2 = SPIxC2_16; // Initialise SPI1 but leave disabled bdmcf_interfaceIdle(); #ifdef TCLK_CTL_DISABLE TCLK_CTL_DISABLE(); #endif }