123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include "SdFat.h"
- #include "SPI.h"
- #if SPI_DRIVER_SELECT == 3
- #define SD_CS_PIN SS
- class MySpiClass : public SdSpiBaseClass {
- public:
-
- void activate() {
- SPI.beginTransaction(m_spiSettings);
- }
-
- void begin(SdSpiConfig config) {
- (void)config;
- SPI.begin();
- }
-
- void deactivate() {
- SPI.endTransaction();
- }
-
- uint8_t receive() {
- return SPI.transfer(0XFF);
- }
-
-
- uint8_t receive(uint8_t* buf, size_t count) {
- for (size_t i = 0; i < count; i++) {
- buf[i] = SPI.transfer(0XFF);
- }
- return 0;
- }
-
- void send(uint8_t data) {
- SPI.transfer(data);
- }
-
-
- void send(const uint8_t* buf, size_t count) {
- for (size_t i = 0; i < count; i++) {
- SPI.transfer(buf[i]);
- }
- }
-
- void setSckSpeed(uint32_t maxSck) {
- m_spiSettings = SPISettings(maxSck, MSBFIRST, SPI_MODE0);
- }
- private:
- SPISettings m_spiSettings;
- } mySpi;
- #if ENABLE_DEDICATED_SPI
- #define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(50), &mySpi)
- #else
- #define SD_CONFIG SdSpiConfig(SD_CS_PIN, SHARED_SPI, SD_SCK_MHZ(50), &mySpi)
- #endif
- SdFat sd;
- void setup() {
- Serial.begin(9600);
- if (!sd.begin(SD_CONFIG)) {
- sd.initErrorHalt(&Serial);
- }
- sd.ls(&Serial, LS_SIZE);
- }
- void loop() {}
- #else
- #error SPI_DRIVER_SELECT must be three in SdFat/SdFatConfig.h
- #endif
|