
Here is the code for that:
Code: Select all
static void t_sdcard(void *arg)
{
(void)arg;
chRegSetThreadName("sdcard");
// For now just listen for events
while (TRUE)
{
spiSelect(&SPID1);
spiSend(&SPID1, 11, "Hello World");
chThdSleepSeconds(1);
}
// Should never get here
chThdExit(1);
}
void createSdCardThread(void)
{
/*
* Initializes the MMC driver to work with SPI1.
*/
palSetPadMode(GPIOA, 4, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* NSS. */
palSetPadMode(GPIOA, 5, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK. */
palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(5)); /* MISO. */
palSetPadMode(GPIOB, 5, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI. */
palSetPad(GPIOA, 4); // Set NSS high
spiObjectInit(&SPID1);
spiStart(&SPID1, &ls_spicfg);
chThdCreateStatic(waSdCard, sizeof(waSdCard), LOWPRIO, (tfunc_t)t_sdcard, NULL);
}But when I use that same SPI port with the same config under MMC, I get SCK, but MOSI is always logic high, as seen below:

And here is the code for that:
Code: Select all
static void t_sdcard(void *arg)
{
(void)arg;
chRegSetThreadName("sdcard");
static const evhandler_t evhndl[] = {
InsertHandler,
RemoveHandler
};
struct EventListener el0, el1;
chEvtRegister(&MMCD1.inserted_event, &el0, 0);
chEvtRegister(&MMCD1.removed_event, &el1, 1);
mmcStart(&MMCD1, NULL);
// For now just listen for events
while (TRUE)
{
if(fs_ready)
{
f_open(sdfp, "/sd/tap_bfr.txt", FA_READ);
if (sdfp == NULL)
{
chprintf((BaseChannel *)&SD1, "Could not open tap_bfr.txt\n");
}
else
{
f_close(sdfp);
}
}
chEvtDispatch(evhndl, chEvtWaitOne(ALL_EVENTS));
}
// Should never get here
chThdExit(1);
}
void createSdCardThread(void)
{
/*
* Initializes the MMC driver to work with SPI1.
*/
palSetPadMode(GPIOA, 4, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* NSS. */
palSetPadMode(GPIOA, 5, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK. */
palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(5)); /* MISO. */
palSetPadMode(GPIOB, 5, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI. */
palSetPad(GPIOA, 4); // Set NSS high
mmcObjectInit(&MMCD1, &SPID1, &ls_spicfg, &hs_spicfg, mmc_is_protected, mmc_is_inserted);
mmcStart(&MMCD1, NULL);
chThdCreateStatic(waSdCard, sizeof(waSdCard), LOWPRIO, (tfunc_t)t_sdcard, NULL);
}So anybody have any idea why this is happening?
