Estoy conectando un puente SC16IS750 spi-2-uart a Raspberry Pi 2 para aumentar la cantidad de puertos uart. El producto es una placa de conexión fabricada por Sparkfun ( https://www.sparkfun.com/products/9981 ), que utiliza el chip SC16IS750 ( http://www.nxp.com/documents/data_sheet/SC16IS740_750_760.pdf ). Uso la biblioteca BCM2835 de Mike McCauley para acceder a SPI.
El problema es que cualquiera que sea el registro que intento leer, invariablemente obtengo 0xff. Por ejemplo,
uint8_t tx[2]; tx[0] = 0x07 << 3 | 0x80; // SPR register tx[1] = 0x00; uint8_t rx[2] = {0x00, 0x00}; // perform duplex write operation bcm2835_spi_transfernb(tx, rx, 2);rx[0] y rx[1] devuelve 0xff. No importa qué registro intente leer, el resultado es el mismo.
La placa de conexiones ya conecta a tierra el pin de reinicio. Conecto el pin CS a SSEL1, CLK a GPIO11, SI a GPIO10, SO a GPIO9 y SPI/I2C a tierra. Probé con otro chip, misma respuesta. SPI funciona bien ya que también lo uso con éxito con otro periférico.
¿Alguna idea de lo que debería probar a continuación?
Resulta que el problema es el divisor del reloj. Configuración del divisor de reloj SPI a 256 y superior
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_256)resolvió el problema.