9
9
#define DBG_LVL DBG_INFO
10
10
#include <rtdbg.h>
11
11
12
+ #define SDHI_USING_CD
13
+ #define RA_SDHI_CD_PIN "p503"
14
+
15
+ #ifdef BSP_USING_OPENMV
16
+ #include "led.h"
17
+ #endif /* BSP_USING_OPENMV */
18
+
12
19
#ifdef BSP_USING_ONCHIP_FS
13
20
#include "fal.h"
14
21
#define FS_PARTITION_NAME "disk"
@@ -47,10 +54,11 @@ static void sd_mount(void)
47
54
#elif defined(BSP_USING_SDCARD_FS )
48
55
#include <drv_sdhi.h>
49
56
57
+ #ifdef SDHI_USING_CD
50
58
/* SD Card hot plug detection pin */
51
- #define SD_CHECK_PIN "p405"
52
-
59
+ #define SD_CHECK_PIN RA_SDHI_CD_PIN
53
60
static rt_base_t sd_check_pin = 0 ;
61
+ #endif
54
62
55
63
static void _sdcard_mount (void )
56
64
{
@@ -92,39 +100,48 @@ static void _sdcard_unmount(void)
92
100
93
101
static void sd_auto_mount (void * parameter )
94
102
{
95
- rt_uint8_t re_sd_check_pin = 1 ;
96
- rt_thread_mdelay (20 );
103
+ rt_uint8_t re_sd_check_pin = 0 ;
104
+ rt_thread_mdelay (500 );
97
105
98
- if (!rt_pin_read (sd_check_pin ))
106
+ #ifdef SDHI_USING_CD
107
+ if (re_sd_check_pin = rt_pin_read (sd_check_pin ))
99
108
{
100
109
_sdcard_mount ();
101
110
}
102
111
103
112
while (1 )
104
113
{
105
114
rt_thread_mdelay (200 );
106
-
107
- if (re_sd_check_pin && (re_sd_check_pin = rt_pin_read (sd_check_pin )) == 0 )
115
+ if (!re_sd_check_pin && (re_sd_check_pin = rt_pin_read (sd_check_pin )) != 0 )
108
116
{
117
+ #ifdef BSP_USING_OPENMV
118
+ led_state (LED_RED , 1 );
119
+ #endif /* BSP_USING_OPENMV */
109
120
_sdcard_mount ();
121
+ #ifdef BSP_USING_OPENMV
122
+ led_state (LED_RED , 0 );
123
+ #endif /* BSP_USING_OPENMV */
110
124
}
111
125
112
- if (! re_sd_check_pin && (re_sd_check_pin = rt_pin_read (sd_check_pin )) ! = 0 )
126
+ if (re_sd_check_pin && (re_sd_check_pin = rt_pin_read (sd_check_pin )) = = 0 )
113
127
{
114
128
_sdcard_unmount ();
115
129
}
116
130
}
131
+ #else
132
+ _sdcard_mount ();
133
+ #endif /* SDHI_USING_CD */
117
134
}
118
135
119
136
static void sd_mount (void )
120
137
{
121
138
rt_thread_t tid ;
122
-
139
+ #ifdef SDHI_USING_CD
123
140
sd_check_pin = rt_pin_get (SD_CHECK_PIN );
124
141
rt_pin_mode (sd_check_pin , PIN_MODE_INPUT_PULLUP );
125
-
142
+ #endif /* SDHI_USING_CD */
126
143
tid = rt_thread_create ("sd_mount" , sd_auto_mount , RT_NULL ,
127
- 2048 , RT_THREAD_PRIORITY_MAX - 2 , 20 );
144
+ 2048 , RT_THREAD_PRIORITY_MAX - 12 , 20 );
128
145
if (tid != RT_NULL )
129
146
{
130
147
rt_thread_startup (tid );
@@ -137,12 +154,12 @@ static void sd_mount(void)
137
154
}
138
155
139
156
#else
140
- #include <dev_spi_msd .h>
141
- #include "drv_sci .h"
157
+ #include <spi_msd .h>
158
+ #include "drv_sci_spi .h"
142
159
int sd_mount (void )
143
160
{
144
161
uint32_t cs_pin = BSP_IO_PORT_10_PIN_05 ;
145
- rt_hw_sci_spi_device_attach ("sci2s " , "scpi20" , cs_pin );
162
+ rt_hw_sci_spi_device_attach ("scpi2 " , "scpi20" , cs_pin );
146
163
msd_init ("sd0" , "scpi20" );
147
164
if (dfs_mount ("sd0" , "/" , "elm" , 0 , 0 ) == 0 )
148
165
{
@@ -158,8 +175,14 @@ int sd_mount(void)
158
175
159
176
int mount_init (void )
160
177
{
178
+ mmcsd_wait_cd_changed (0 );
179
+
180
+ sdcard_change ();
181
+ mmcsd_wait_cd_changed (RT_WAITING_FOREVER );
182
+
183
+ rt_thread_mdelay (200 );
161
184
sd_mount ();
162
185
return RT_EOK ;
163
186
}
164
- // INIT_ENV_EXPORT(mount_init);
165
- #endif
187
+ INIT_ENV_EXPORT (mount_init );
188
+ #endif
0 commit comments