@@ -309,8 +309,10 @@ __STATIC_INLINE uint8_t DAP_GetProductFirmwareVersionString(char *str)
309309#define PIN_GPIO HPM_FGPIO
310310#define PIN_GPIOM gpiom_core0_fast
311311
312+ #define PIN_TCK_SLV IOC_PAD_PA27
312313#define PIN_TCK IOC_PAD_PB11
313314#define PIN_TMS IOC_PAD_PA29
315+ #define PIN_TMS_IN IOC_PAD_PA28
314316#define PIN_TDI IOC_PAD_PB13
315317#define PIN_TDO IOC_PAD_PB12
316318
@@ -399,12 +401,11 @@ __STATIC_INLINE void PORT_OFF(void)
399401 HPM_IOC -> PAD [PIN_JTAG_TRST ].PAD_CTL = IOC_PAD_PAD_CTL_PRS_SET (2 );
400402 HPM_IOC -> PAD [PIN_JTAG_TRST ].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET (0 );
401403
402- HPM_IOC -> PAD [IOC_PAD_PA27 ].PAD_CTL = IOC_PAD_PAD_CTL_PRS_SET (2 );
403- HPM_IOC -> PAD [IOC_PAD_PA27 ].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET (0 ); // SWD SPI SCLK
404- gpio_set_pin_input (PIN_GPIO , GPIO_GET_PORT_INDEX (IOC_PAD_PA27 ), GPIO_GET_PIN_INDEX (IOC_PAD_PA27 ));
405- gpio_disable_pin_interrupt (PIN_GPIO , GPIO_GET_PORT_INDEX (IOC_PAD_PA27 ), GPIO_GET_PIN_INDEX (IOC_PAD_PA27 ));
406- gpiom_set_pin_controller (HPM_GPIOM , GPIO_GET_PORT_INDEX (IOC_PAD_PA27 ), GPIO_GET_PIN_INDEX (IOC_PAD_PA27 ),
407- PIN_GPIOM );
404+ HPM_IOC -> PAD [PIN_TCK_SLV ].PAD_CTL = IOC_PAD_PAD_CTL_PRS_SET (2 );
405+ HPM_IOC -> PAD [PIN_TCK_SLV ].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET (0 ); // SWD SPI SCLK
406+ gpio_set_pin_input (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TCK_SLV ), GPIO_GET_PIN_INDEX (PIN_TCK_SLV ));
407+ gpio_disable_pin_interrupt (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TCK_SLV ), GPIO_GET_PIN_INDEX (PIN_TCK_SLV ));
408+ gpiom_set_pin_controller (HPM_GPIOM , GPIO_GET_PORT_INDEX (PIN_TCK_SLV ), GPIO_GET_PIN_INDEX (PIN_TCK_SLV ), PIN_GPIOM );
408409
409410 gpio_set_pin_input (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TCK ), GPIO_GET_PIN_INDEX (PIN_TCK ));
410411 gpio_disable_pin_interrupt (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TCK ), GPIO_GET_PIN_INDEX (PIN_TCK ));
@@ -471,7 +472,6 @@ __STATIC_FORCEINLINE void PIN_SWCLK_TCK_CLR(void)
471472*/
472473__STATIC_FORCEINLINE uint32_t PIN_SWDIO_TMS_IN (void )
473474{
474- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 0 );
475475 uint32_t sta = gpio_read_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
476476 __asm volatile ("fence io, io" );
477477 return sta ;
@@ -482,7 +482,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to high level.
482482*/
483483__STATIC_FORCEINLINE void PIN_SWDIO_TMS_SET (void )
484484{
485- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
486485 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), true);
487486 __asm volatile ("fence io, io" );
488487}
@@ -492,7 +491,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to low level.
492491*/
493492__STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR (void )
494493{
495- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
496494 gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), false);
497495 __asm volatile ("fence io, io" );
498496}
@@ -502,7 +500,6 @@ __STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR(void)
502500*/
503501__STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN (void )
504502{
505- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 0 );
506503 uint32_t sta = gpio_read_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ));
507504 __asm volatile ("fence io, io" );
508505 return sta ;
@@ -513,12 +510,7 @@ __STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN(void)
513510*/
514511__STATIC_FORCEINLINE void PIN_SWDIO_OUT (uint32_t bit )
515512{
516- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (SWDIO_DIR ), GPIO_GET_PIN_INDEX (SWDIO_DIR ), 1 );
517- if (bit & 0x01 ) {
518- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), true);
519- } else {
520- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), false);
521- }
513+ gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TMS ), GPIO_GET_PIN_INDEX (PIN_TMS ), bit & 0x01 );
522514 __asm volatile ("fence io, io" );
523515}
524516
@@ -567,12 +559,7 @@ __STATIC_FORCEINLINE uint32_t PIN_TDI_IN(void)
567559*/
568560__STATIC_FORCEINLINE void PIN_TDI_OUT (uint32_t bit )
569561{
570-
571- if (bit & 0x01 ) {
572- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TDI ), GPIO_GET_PIN_INDEX (PIN_TDI ), true);
573- } else {
574- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TDI ), GPIO_GET_PIN_INDEX (PIN_TDI ), false);
575- }
562+ gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_TDI ), GPIO_GET_PIN_INDEX (PIN_TDI ), bit & 0x01 );
576563 __asm volatile ("fence io, io" );
577564}
578565
@@ -609,11 +596,7 @@ __STATIC_FORCEINLINE uint32_t PIN_nTRST_IN(void)
609596*/
610597__STATIC_FORCEINLINE void PIN_nTRST_OUT (uint32_t bit )
611598{
612- if (bit & 0x01 ) {
613- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_JTAG_TRST ), GPIO_GET_PIN_INDEX (PIN_JTAG_TRST ), true);
614- } else {
615- gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_JTAG_TRST ), GPIO_GET_PIN_INDEX (PIN_JTAG_TRST ), false);
616- }
599+ gpio_write_pin (PIN_GPIO , GPIO_GET_PORT_INDEX (PIN_JTAG_TRST ), GPIO_GET_PIN_INDEX (PIN_JTAG_TRST ), bit & 0x01 );
617600 __asm volatile ("fence io, io" );
618601}
619602
0 commit comments