Tengo un sensor con una interfaz SSC de 3 hilos, que es compatible con SPI, pero solo tiene una línea de datos bidireccional. Ahora trato de leer este sensor () y me envía los datos de vuelta, pero como MISO y MOSI están en cortocircuito (según lo recomendado por el fabricante del chip), los datos se bloquean después de la resistencia de la línea de datos de 470Ohm, porque MOSI necesita ir a alta impedancia después de la el comando fue enviado.
Entonces, ¿cómo puedo lograr un pin MOSI de alta impedancia en un STM32F410CBU6? Podría definirlo como una entrada, pero luego debo reiniciar la interfaz SPI. ¿Existe una solución más sencilla con menos gastos generales?
Editar: Intenté configurar el SPI en el modo semidúplex. Desde que uso CubeMX, la configuración para esto fue fácil, pero todavía no tengo éxito. Cuando el SPI está en el modo semidúplex, el SCK parece tener un pequeño desplazamiento (tal vez alrededor de 0.4 V) y la línea MOSI también tiene un comportamiento extraño. Cuando cambio al modo dúplex completo, este comportamiento desaparece. Que podria causar esto? Estoy leyendo el sensor que nos gusta esto:
HAL_GPIO_WritePin(SPI_CS_PORT, SPI_CS, LOW);
spi_pos->Instance->CR1 |= (1<<BIDIOE);
HAL_SPI_Transmit(spi_pos,&command,1,1);
spi_pos->Instance->CR1 &= ~(1<<BIDIOE);
asm("nop"); // Since sensor needs some ns to switch to sender mode
HAL_SPI_Receive(spi_pos,data,size,1);
HAL_GPIO_WritePin(SPI_CS_PORT, SPI_CS, HIGH);
El SPI se configura de la siguiente manera:
/* SPI2 parameter configuration*/
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_16BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 15;
SCKFullDuplex:
HalfDuplexMOSI:
SCKHalfDuplex:
Edición2:AquíestánlasconfiguracionesenCubeMX: