From b42285fddd7632e889e5736801dcd4901f381c70 Mon Sep 17 00:00:00 2001 From: Thad House Date: Fri, 8 Dec 2017 21:42:30 -0800 Subject: [PATCH] Fixes SPI bad chip select (#818) Temporary workaround for 2018v13 image. --- hal/src/main/native/athena/DigitalInternal.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hal/src/main/native/athena/DigitalInternal.cpp b/hal/src/main/native/athena/DigitalInternal.cpp index 918409a657..c1f3561982 100644 --- a/hal/src/main/native/athena/DigitalInternal.cpp +++ b/hal/src/main/native/athena/DigitalInternal.cpp @@ -99,6 +99,15 @@ void initializeDigital(int32_t* status) { // SPI setup spiSystem.reset(tSPI::create(status)); + // Image 13 requires a SPI select and a strobe to enable SPI CS on MXP. + // Switch to SPI 1, strobe the signal, and then switch back to previous. + bool existingSelect = spiSystem->readAutoSPI1Select(status); + spiSystem->writeAutoSPI1Select(true, status); + spiSystem->strobeAutoForceOne(status); + // Delay enough time to actually trigger strobe + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + spiSystem->writeAutoSPI1Select(existingSelect, status); + digitalSystemsInitialized = true; }