Исправлена инициализация ног SPI, включен
вывод отладки в SDIO.
This commit is contained in:
@@ -763,7 +763,6 @@
|
||||
* Override with M201
|
||||
* X, Y, Z, E0 [, E1[, E2...]]
|
||||
*/
|
||||
// @efim-a-efim - decreased E0 acceleration to make it less noisy (yes, even with TMC2208 drivers)
|
||||
#define DEFAULT_MAX_ACCELERATION { 1000, 1000, 100, 800 }
|
||||
|
||||
#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
|
||||
@@ -1155,7 +1154,7 @@
|
||||
* For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
|
||||
* By default the firmware assumes HIGH=FILAMENT PRESENT.
|
||||
*/
|
||||
#define FILAMENT_RUNOUT_SENSOR
|
||||
//#define FILAMENT_RUNOUT_SENSOR
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
|
||||
#define FIL_RUNOUT_INVERTING true // Set to true to invert the logic of the sensor.
|
||||
|
||||
@@ -267,8 +267,6 @@ void eeprom_read_block(void *__dst, const void *__src, size_t __n);
|
||||
void eeprom_update_block(const void *__src, void *__dst, size_t __n);
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// ADC
|
||||
//
|
||||
|
||||
@@ -63,24 +63,28 @@ CS - PB12 Out push-pull
|
||||
|
||||
dwt_init();
|
||||
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN|RCC_APB2ENR_AFIOEN;
|
||||
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN|RCC_APB2ENR_IOPAEN|RCC_APB2ENR_AFIOEN;
|
||||
|
||||
tmp = PORTB->CRH;
|
||||
tmp |= (GPIO_CRH_MODE13|GPIO_CRH_MODE15|GPIO_CRH_CNF13|GPIO_CRH_CNF15);
|
||||
tmp &= ~(GPIO_CRH_MODE14|GPIO_CRH_CNF14);
|
||||
tmp |= GPIO_CRH_CNF14_0;
|
||||
tmp &= ~GPIO_CRH_CNF12;
|
||||
tmp |= GPIO_CRH_MODE12;
|
||||
tmp &= ~(GPIO_CRH_MODE14|GPIO_CRH_CNF14|GPIO_CRH_CNF12|GPIO_CRH_CNF13|GPIO_CRH_CNF14|GPIO_CRH_CNF15);
|
||||
tmp |= (GPIO_CRH_MODE12|GPIO_CRH_MODE13|GPIO_CRH_MODE15|GPIO_CRH_CNF13_1|GPIO_CRH_CNF15_1|GPIO_CRH_CNF14_0);
|
||||
PORTB->CRH = tmp;
|
||||
|
||||
//CS PIN
|
||||
tmp= PORTA->CRL;
|
||||
tmp &= ~GPIO_CRL_CNF7;
|
||||
tmp |= GPIO_CRL_MODE7;
|
||||
PORTA->CRL = tmp;
|
||||
|
||||
PORTA->BSRR = GPIO_BSRR_BS7;
|
||||
|
||||
SPI2_STOP;
|
||||
|
||||
RCC->APB1ENR|= RCC_APB1ENR_SPI2EN;
|
||||
|
||||
SPI2->CR1 = SPI_CR1_SSM|\
|
||||
SPI_CR1_SSI|\
|
||||
(6 << SPI_CR1_BR_Pos)|\
|
||||
SPI_CR1_CPHA|\
|
||||
(4 << SPI_CR1_BR_Pos)|\
|
||||
SPI_CR1_MSTR;
|
||||
|
||||
SPI2->CR1 |= SPI_CR1_SPE;
|
||||
@@ -171,7 +175,6 @@ void eeprom_update_block(const void *__src, void *__dst, size_t __n){
|
||||
|
||||
|
||||
uint8_t spi_send(uint8_t data){
|
||||
|
||||
while((SPI2->SR & SPI_SR_TXE) == 0){NOP;};
|
||||
SPI2->DR = data;
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <libmaple/stm32.h>
|
||||
|
||||
#include "../../inc/MarlinConfig.h" // Allow pins/pins.h to set density
|
||||
#include "../../module/mks_wifi/debug_to_uart.h"
|
||||
|
||||
#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY)
|
||||
|
||||
@@ -82,10 +83,12 @@ bool SDIO_Init() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) {
|
||||
if (SDIO_GetCardState() != SDIO_CARD_TRANSFER) return false;
|
||||
if (blockAddress >= SdCard.LogBlockNbr) return false;
|
||||
if ((0x03 & (uint32_t)data)) return false; // misaligned data
|
||||
uint32_t SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) {
|
||||
uint32_t ret_val;
|
||||
|
||||
if (SDIO_GetCardState() != SDIO_CARD_TRANSFER) return 0xF0000000;
|
||||
if (blockAddress >= SdCard.LogBlockNbr) return 0xF1000000;
|
||||
if ((0x03 & (uint32_t)data)) return 0xF2000000; // misaligned data
|
||||
|
||||
if (SdCard.CardType != CARD_SDHC_SDXC) { blockAddress *= 512U; }
|
||||
|
||||
@@ -99,30 +102,42 @@ bool SDIO_ReadBlock_DMA(uint32_t blockAddress, uint8_t *data) {
|
||||
if (!SDIO_CmdReadSingleBlock(blockAddress)) {
|
||||
SDIO_CLEAR_FLAG(SDIO_ICR_CMD_FLAGS);
|
||||
dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL);
|
||||
return false;
|
||||
return 0xF3000000;
|
||||
}
|
||||
|
||||
while (!SDIO_GET_FLAG(SDIO_STA_DATAEND | SDIO_STA_TRX_ERROR_FLAGS)) {}
|
||||
|
||||
ret_val = SDIO->STA;
|
||||
|
||||
dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL);
|
||||
|
||||
if (SDIO->STA & SDIO_STA_RXDAVL) {
|
||||
DEBUG("SDIO_STA_RXDAVL");
|
||||
while (SDIO->STA & SDIO_STA_RXDAVL) (void)SDIO->FIFO;
|
||||
SDIO_CLEAR_FLAG(SDIO_ICR_CMD_FLAGS | SDIO_ICR_DATA_FLAGS);
|
||||
return false;
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
if (SDIO_GET_FLAG(SDIO_STA_TRX_ERROR_FLAGS)) {
|
||||
DEBUG("SDIO_STA_TRX_ERROR_FLAGS");
|
||||
SDIO_CLEAR_FLAG(SDIO_ICR_CMD_FLAGS | SDIO_ICR_DATA_FLAGS);
|
||||
return false;
|
||||
return ret_val;
|
||||
}
|
||||
SDIO_CLEAR_FLAG(SDIO_ICR_CMD_FLAGS | SDIO_ICR_DATA_FLAGS);
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool SDIO_ReadBlock(uint32_t blockAddress, uint8_t *data) {
|
||||
uint32_t retries = 10;
|
||||
while (retries--) if (SDIO_ReadBlock_DMA(blockAddress, data)) return true;
|
||||
uint32_t status;
|
||||
while (retries--){
|
||||
status = SDIO_ReadBlock_DMA(blockAddress, data);
|
||||
if (status == 0){
|
||||
return true;
|
||||
}else{
|
||||
DEBUG("SD error, R: %d STA=0x%0X",retries,status);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ void GcodeSuite::dwell(millis_t time) {
|
||||
void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
||||
KEEPALIVE_STATE(IN_HANDLER);
|
||||
|
||||
DEBUG("Cmd %c %d",parser.command_letter,parser.codenum);
|
||||
//DEBUG("Cmd %c %d",parser.command_letter,parser.codenum);
|
||||
|
||||
// Handle a known G, M, or T
|
||||
switch (parser.command_letter) {
|
||||
|
||||
Reference in New Issue
Block a user