SDIO fix
This commit is contained in:
@@ -95,6 +95,7 @@ uint32_t SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) {
|
||||
dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, data, DMA_SIZE_32BITS, DMA_MINC_MODE);
|
||||
dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, 128);
|
||||
dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL);
|
||||
dma_set_priority(SDIO_DMA_DEV,SDIO_DMA_CHANNEL,DMA_PRIORITY_VERY_HIGH);
|
||||
dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL);
|
||||
|
||||
sdio_setup_transfer(SDIO_DATA_TIMEOUT * (F_CPU / 1000U), 512, SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN | SDIO_DIR_RX);
|
||||
@@ -106,7 +107,8 @@ uint32_t SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) {
|
||||
}
|
||||
|
||||
while (!SDIO_GET_FLAG(SDIO_STA_DATAEND | SDIO_STA_TRX_ERROR_FLAGS)) {}
|
||||
|
||||
while(SDIO_GET_FLAG(SDIO_STA_RXACT) || SDIO_GET_FLAG(SDIO_STA_RXDAVL)){};
|
||||
|
||||
ret_val = SDIO->STA;
|
||||
|
||||
dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL);
|
||||
|
||||
@@ -100,9 +100,9 @@
|
||||
#define SDIO_DATA_TIMEOUT 100U /* Read data transfer timeout */
|
||||
#define SDIO_WRITE_TIMEOUT 200U /* Write data transfer timeout */
|
||||
|
||||
// #define SDIO_CLOCK 18000000 /* 18 MHz */
|
||||
#define SDIO_CLOCK 18000000 /* 18 MHz */
|
||||
// Setting SDIO_CLOCK to 4.5 MHz fixes random print interruptions with moving to endstops
|
||||
#define SDIO_CLOCK 4500000 /* 4.5 MHz */
|
||||
//#define SDIO_CLOCK 4500000 /* 4.5 MHz */
|
||||
|
||||
// ------------------------
|
||||
// Types
|
||||
|
||||
23
Marlin/src/module/mks_wifi/mkf_test_sdio.cpp
Normal file
23
Marlin/src/module/mks_wifi/mkf_test_sdio.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "mks_test_sdio.h"
|
||||
#include "../../MarlinCore.h"
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
#include "../../libs/Segger/log.h"
|
||||
#include "../../sd/cardreader.h"
|
||||
|
||||
|
||||
void mks_test_sdio(void){
|
||||
uint8_t data[512];
|
||||
CardReader::mount();
|
||||
|
||||
DEBUG("Start sdio test");
|
||||
|
||||
for(uint32_t i=0; i<100000; i++){
|
||||
if((i%1000) == 0){
|
||||
DEBUG("Progress %d blocks",i);
|
||||
}
|
||||
SDIO_ReadBlock(i,data);
|
||||
}
|
||||
|
||||
DEBUG("Finish sdio test");
|
||||
|
||||
}
|
||||
6
Marlin/src/module/mks_wifi/mks_test_sdio.h
Normal file
6
Marlin/src/module/mks_wifi/mks_test_sdio.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef MKS_WIFI_SDIOTEST_H
|
||||
#define MKS_WIFI_SDIOTEST_H
|
||||
|
||||
void mks_test_sdio(void);
|
||||
|
||||
#endif
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "../../lcd/ultralcd.h"
|
||||
#include "mks_wifi_sd.h"
|
||||
#include "mks_test_sdio.h"
|
||||
|
||||
uint8_t mks_in_buffer[ESP_PACKET_DATA_MAX_SIZE];
|
||||
uint8_t mks_out_buffer[ESP_PACKET_DATA_MAX_SIZE];
|
||||
@@ -30,6 +31,10 @@ void mks_wifi_init(void){
|
||||
safe_delay(1000);
|
||||
WRITE(MKS_WIFI_IO4, LOW);
|
||||
|
||||
#ifdef SDIO_TEST_AT_STARTUP
|
||||
mks_test_sdio();
|
||||
#endif
|
||||
|
||||
#ifdef LIST_FILES_AT_STARTUP
|
||||
mks_wifi_sd_deinit();
|
||||
mks_wifi_sd_init();
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "../../libs/Segger/log.h"
|
||||
#include "mks_wifi_settings.h"
|
||||
|
||||
//#define SDIO_TEST_AT_STARTUP
|
||||
|
||||
#define MKS_WIFI_SERIAL_NUM (uint8_t)1
|
||||
|
||||
#define WIFI_MODE_STA (uint8_t)2
|
||||
|
||||
Reference in New Issue
Block a user