Skip to content

Commit 5431d87

Browse files
committed
fix(hslinklite): change gpio mode for input&output
Signed-off-by: sakumisu <1203593632@qq.com>
1 parent c91cd0f commit 5431d87

3 files changed

Lines changed: 7 additions & 8 deletions

File tree

projects/HSLink-Lite/DAP_config.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,6 @@ __STATIC_FORCEINLINE void PIN_SWCLK_TCK_CLR(void)
446446
*/
447447
__STATIC_FORCEINLINE uint32_t PIN_SWDIO_TMS_IN(void)
448448
{
449-
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 0);
450449
uint32_t sta = gpio_read_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS));
451450
__asm volatile("fence io, io");
452451
return sta;
@@ -457,7 +456,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to high level.
457456
*/
458457
__STATIC_FORCEINLINE void PIN_SWDIO_TMS_SET(void)
459458
{
460-
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 1);
461459
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS), true);
462460
__asm volatile("fence io, io");
463461
}
@@ -467,7 +465,6 @@ Set the SWDIO/TMS DAP hardware I/O pin to low level.
467465
*/
468466
__STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR(void)
469467
{
470-
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 1);
471468
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS), false);
472469
__asm volatile("fence io, io");
473470
}
@@ -477,7 +474,6 @@ __STATIC_FORCEINLINE void PIN_SWDIO_TMS_CLR(void)
477474
*/
478475
__STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN(void)
479476
{
480-
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 0);
481477
uint32_t sta = gpio_read_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS));
482478
__asm volatile("fence io, io");
483479
return sta;
@@ -488,7 +484,6 @@ __STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN(void)
488484
*/
489485
__STATIC_FORCEINLINE void PIN_SWDIO_OUT(uint32_t bit)
490486
{
491-
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 1);
492487
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS), bit & 0x01);
493488
__asm volatile("fence io, io");
494489
}
@@ -500,6 +495,8 @@ called prior \ref PIN_SWDIO_OUT function calls.
500495
__STATIC_FORCEINLINE void PIN_SWDIO_OUT_ENABLE(void)
501496
{
502497
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 1);
498+
gpio_set_pin_output(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS));
499+
__asm volatile("fence io, io");
503500
}
504501

505502
/** SWDIO I/O pin: Switch to Input mode (used in SWD mode only).
@@ -509,6 +506,8 @@ called prior \ref PIN_SWDIO_IN function calls.
509506
__STATIC_FORCEINLINE void PIN_SWDIO_OUT_DISABLE(void)
510507
{
511508
gpio_write_pin(PIN_GPIO, GPIO_GET_PORT_INDEX(SWDIO_DIR), GPIO_GET_PIN_INDEX(SWDIO_DIR), 0);
509+
gpio_set_pin_input(PIN_GPIO, GPIO_GET_PORT_INDEX(PIN_TMS), GPIO_GET_PIN_INDEX(PIN_TMS));
510+
__asm volatile("fence io, io");
512511
}
513512

514513

projects/HSLink-Lite/JTAG_DP/JTAG_DP_IO.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ JTAG_TransferFunction(Slow)
265265
void IO_PORT_JTAG_SETUP (void) {
266266
HPM_IOC->PAD[PIN_TCK].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0); /* as gpio*/
267267
HPM_IOC->PAD[PIN_TMS].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0); /* as gpio*/
268-
HPM_IOC->PAD[PIN_TDI].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0) | IOC_PAD_FUNC_CTL_LOOP_BACK_MASK; /* as gpio*/
268+
HPM_IOC->PAD[PIN_TDI].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0); /* as gpio*/
269269
HPM_IOC->PAD[PIN_TDO].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0);
270270
HPM_IOC->PAD[PIN_JTAG_TRST].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0);
271271
HPM_IOC->PAD[PIN_SRST].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0);

projects/HSLink-Lite/SW_DP/SW_DP_IO.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858

5959
#if (DAP_SWD != 0)
6060
void IO_PORT_SWD_SETUP (void) {
61-
HPM_IOC->PAD[PIN_TCK].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0) | IOC_PAD_FUNC_CTL_LOOP_BACK_MASK; /* as gpio*/
62-
HPM_IOC->PAD[PIN_TMS].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0) | IOC_PAD_FUNC_CTL_LOOP_BACK_MASK; /* as gpio*/
61+
HPM_IOC->PAD[PIN_TCK].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0); /* as gpio*/
62+
HPM_IOC->PAD[PIN_TMS].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0); /* as gpio*/
6363
HPM_IOC->PAD[PIN_SRST].FUNC_CTL = IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0);
6464
HPM_IOC->PAD[PIN_TCK].PAD_CTL = IOC_PAD_PAD_CTL_PRS_SET(2) | IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(1) | IOC_PAD_PAD_CTL_SPD_SET(3);
6565
HPM_IOC->PAD[PIN_TMS].PAD_CTL = IOC_PAD_PAD_CTL_PRS_SET(2) | IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(1) | IOC_PAD_PAD_CTL_SPD_SET(3);

0 commit comments

Comments
 (0)