Esp32 con modulo ch376s SPI

holaa como estan estoy iniciando un nuevo proyecto y quiero manejar el modulo UBS sin embargo no he conseguido que se conecte el modulo la memoria esta en fat32 y he revisado los datasheet y los repositorios de este modulo, por favor alguien tiene información que me ayude a solucionar este problema
quiero lograrlo conectar por spi pues ya tengo varios usart virtuales y los seriales estan ocupados

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @stg07777.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.

Y cuál es el código, y los links de tutoriales que has usado, aporta la información que ayude a responderte.
Como lo tienes conectado? Esquema

Google ESP32 CH376s y salió esto

esta es una mejor referencia

si gracias por la sugerencia, tengo los pines configuradas en el github que enviaste sin embargo utilizando la liberia SD Y FS de arduino para el manejo de spi no se logra conectar el modulo con la esp32, tengo la memoria en formato FAT32

este es el codigo implementado

#include <Arduino.h>
#include <SD.h>
#include <SPI.h>
#include <FS.h>  // Librería para manejar el sistema de archivos

#define SD2_MISO             19
#define SD2_MOSI             23
#define SD2_SCLK             18
#define SD2_CS               5

SPIClass spi2(VSPI); // Objeto para el segundo bus SPI (VSPI)
File myFile2;


#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  Serial.begin(115200);
  spi2.begin(SD2_SCLK, SD2_MISO, SD2_MOSI); 
  SD.begin(SD2_CS,spi2);
  myFile2 = SD.open("TEST.TXT", FILE_WRITE);
  if (myFile2) {
    myFile2.println("testing 1, 2, 3.");
    myFile2.close();
  }
  myFile2 = SD.open("TEST.TXT");
    while (myFile2.available()) {
      Serial.write(myFile2.read());
    }
    myFile2.close();
}

void loop() {}

WR > GND
RD > GND
CS > 3V3
D7 > pin_spi_miso = esp32 ->D19
D6 > pin_spi_mosi = esp32 ->D23
D5 > pin_spi_sck = esp32 ->D18
D3 > pin_ch376_cs = esp32 ->D5
Y los pines del usart estan al aire

Ese código es para manejar una tarjeta SD conectada directamente al micro, no para manejar una SD a través del CH376.
Tienes que usar la librería que te pasó @Surbyte (o escribir la tuya propia).
Revisa los ejemplos de esa librería.

gracias! seguiré intentado

ya logre conectarlo aunque solo fue una vez tengo entiendo que se debe encender un led, pero no logro encenderlo y ya deje un buen rato la memoria conectada y no enciende el led ya revise configuraciones y demás

/*
 * Ch376msc.h
 *
 *  Created on: Feb 25, 2019
 *      Author: György Kovács
 *  Copyright (c) 2019, György Kovács
 * The MIT License (MIT)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */

#ifndef Ch376msc_H_
#define Ch376msc_H_

#include <Arduino.h>
#include "CommDef.h"
#include <Stream.h>
#include <SPI.h>

#if defined(__STM32F1__)
	#include "itoa.h"
#endif
#if defined(ARDUINO_ARCH_SAM) || defined(ARDUINO_ARCH_SAMD)
	#include "avr/dtostrf.h"
#endif

#define ANSWTIMEOUT 1000 // waiting for data from CH
#define MAXDIRDEPTH 3 // 3 = /subdir1/subdir2/subdir3

class Ch376msc {
public:
	/////////////Constructors////////////////////////
	Ch376msc(HardwareSerial &usb, uint32_t speed);//HW serial
	Ch376msc(Stream &sUsb);// SW serial

	//Ch376msc(uint8_t spiSelect, uint8_t intPin, uint32_t speed = SPI_SCK_KHZ(125));
	//Ch376msc(uint8_t spiSelect, uint32_t speed = SPI_SCK_KHZ(125));//SPI with MISO as Interrupt pin
	Ch376msc(uint8_t spiSelect, uint8_t intPin, SPISettings speed = SPI_SCK_KHZ(125));
	Ch376msc(uint8_t spiSelect, SPISettings speed = SPI_SCK_KHZ(125));//SPI with MISO as Interrupt pin

	virtual ~Ch376msc();//destructor
	////////////////////////////////////////////////
	void init();

	uint8_t saveFileAttrb();
	uint8_t openFile();
	uint8_t closeFile();
	uint8_t moveCursor(uint32_t position);
	uint8_t deleteFile();
	uint8_t deleteDir();
	uint8_t pingDevice();
	uint8_t listDir(const char* filename = "*");
	uint8_t readFile(char* buffer, uint8_t b_size);
	uint8_t readRaw(uint8_t* buffer, uint8_t b_size);
	int32_t readLong(char trmChar = '\n');
	uint32_t readULong(char trmChar = '\n');
	double readDouble(char trmChar = '\n');
	uint8_t writeChar(char trmChar);
	uint8_t writeFile(char* buffer, uint8_t b_size);
	uint8_t writeRaw(uint8_t* buffer, uint8_t b_size);
	uint8_t writeNum(uint8_t buffer);
	uint8_t writeNum(int8_t buffer);
	uint8_t writeNum(uint16_t buffer);
	uint8_t writeNum(int16_t buffer);
	uint8_t writeNum(uint32_t buffer);
	uint8_t writeNum(int32_t buffer);
	uint8_t writeNum(double buffer);

	uint8_t writeNumln(uint8_t buffer);
	uint8_t writeNumln(int8_t buffer);
	uint8_t writeNumln(uint16_t buffer);
	uint8_t writeNumln(int16_t buffer);
	uint8_t writeNumln(uint32_t buffer);
	uint8_t writeNumln(int32_t buffer);
	uint8_t writeNumln(double buffer);
	uint8_t cd(const char* dirPath, bool mkDir);
	bool readFileUntil(char trmChar, char* buffer, uint8_t b_size);
	bool checkIntMessage(); // check is it any interrupt message came from CH(drive attach/detach)
	bool driveReady(); // call before file operation to check thumb drive or SD card are present
	void resetFileList();

//set/get

	uint32_t getFreeSectors();
	uint32_t getTotalSectors();
	uint32_t getFileSize();
	uint32_t getCursorPos();
	uint16_t getYear();
	uint16_t getMonth();
	uint16_t getDay();
	uint16_t getHour();
	uint16_t getMinute();
	uint16_t getSecond();
	uint8_t getStreamLen();
	uint8_t getStatus();
	uint8_t getFileSystem();
	uint8_t getFileAttrb();
	uint8_t getSource();
	uint8_t getError();
	uint8_t getChipVer();
	char* getFileName();
	char* getFileSizeStr();
	bool getDeviceStatus(); // usb device mounted, unmounted
	bool getCHpresence();
	bool getEOF();

	void setFileName(const char* filename = "");
	void setYear(uint16_t year);
	void setMonth(uint16_t month);
	void setDay(uint16_t day);
	void setHour(uint16_t hour);
	void setMinute(uint16_t minute);
	void setSecond(uint16_t second);
	void setSource(uint8_t inpSource);

private:

	void write(uint8_t data);
	void print(const char str[]);
	void spiBeginTransfer();
	void spiEndTransfer();
	void driveAttach();
	void driveDetach();

	uint8_t spiWaitInterrupt();
	uint8_t spiReadData();
	uint8_t mount();
	uint8_t getInterrupt();
	uint8_t fileEnumGo();
	uint8_t byteRdGo();
	uint8_t fileCreate();
	uint8_t byteWrGo();
	uint8_t reqByteRead(uint8_t a);
	uint8_t reqByteWrite(uint8_t a);
	uint8_t readSerDataUSB();
	uint8_t writeMachine(uint8_t* buffer, uint8_t b_size);
	uint8_t writeDataFromBuff(uint8_t* buffer);
	uint8_t readDataToBuff(uint8_t* buffer, uint8_t siz);
	uint8_t readMachine(uint8_t* buffer, uint8_t b_size);
	uint8_t dirInfoRead();
	uint8_t setMode(uint8_t mode);
	uint8_t dirCreate();

	void rdFatInfo();
	void setSpeed();
	void setError(uint8_t errCode);
	void clearError();
	void sendCommand(uint8_t b_parancs);
	void sendFilename();
	void writeFatData();
	void constructDate(uint16_t value, uint8_t ymd);
	void constructTime(uint16_t value, uint8_t hms);
	void rdDiskInfo();
	void rstFileContainer();
	void rstDriveContainer();

	///////Global Variables///////////////////////////////
	bool _deviceAttached = false;	//false USB detached, true attached
	bool _controllerReady = false; // ha sikeres a kommunikacio
	bool _hwSerial;
	uint8_t _streamLength = 0;
	uint8_t _fileWrite = 0; // read or write mode, needed for close operation
	uint8_t _dirDepth = 0;// Don't check SD card if it's in subdir
	uint8_t _byteCounter = 0; //vital variable for proper reading,writing
	uint8_t _answer = 0;	//a CH jelenlegi statusza INTERRUPT
	uint8_t _driveSource = 0;//0 = USB, 1 = SD
	uint8_t _spiChipSelect; // chip select pin SPI
	uint8_t _intPin; // interrupt pin
	uint8_t _errorCode = 0; // Store the last error code(see datasheet or CommDef.h)
	uint16_t _sectorCounter = 0;// variable for proper reading
	uint32_t _speed ; // Serial communication speed

	fSizeContainer _cursorPos; //unsigned long union

	char _filename[12];

	HardwareSerial* _comPortHW; // Serial interface
	Stream* _comPort;
	SPISettings _spiSpeed;

	commInterface _interface;
	fileProcessENUM fileProcesSTM = REQUEST;

	fatFileInfo _fileData;
	diskInfo _diskData;


};//end class

#endif /* Ch376msc_H_ */



No me funciona el led no se enciende cuando se conecta la usb y ya cambie el modulo, estoy haciendo las conexiones ayuda por favor

Nosotros no tenemos la placa, solo podemos guiarte y darte alguno que otro consejo.
Tienes que ponerle el tiempo que le estas poniendo e intentar resolverlo.

si ya lo logre, hice comunicación logre enviar de una SD a ese modulo USB

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.