Cómo configurar el chip SC16IS740

0

Estoy tratando de usar el chip SC16IS740 de NXP para leer periódicamente &erio; Dispositivo UART de envío de un solo carácter a través de I2C desde un módulo de Linux incorporado. En un primer paso solo me gustaría leer los caracteres manualmente usando i2ctools , sin interrupciones o FIFO. Sin embargo, no estoy seguro de si hago la configuración correctamente.

Especificación de UART:
Baud 9600, longitud de palabra de 8 bits, sin paridad, 1 bit de parada

Crystal:
f = 1.8432MHz

Secuencia de configuración:

i2cset -y 2 0x4d 0x18 0x80   # LCR - access special registers
i2cset -y 2 0x4d 0x00 0x0C   # DLL - divisor 0x000C (12) to get baud 9600
i2cset -y 2 0x4d 0x08 0x00   # DLH - divisor 0x000C (12) to get baud 9600
i2cset -y 2 0x4d 0x18 0x03   # LCR - access general registers, set config 8N1
i2cset -y 2 0x4d 0x10 0x00   # FCR - disable FIFO (default..)
i2cset -y 2 0x4d 0x08 0x00   # IER - disable interrupts(default..)

(nota: las direcciones de registro se cambian de acuerdo con la sección 10.4 de la hoja de datos)

Por ahora creo que debería poder leer el carácter enviado por mi dispositivo UART en el registro RHR y ver el conjunto de indicadores LSR[0] . Sin embargo, RHR está constantemente en 0x04 y se borra el indicador LSR[0] .

La comunicación I2C del host de Linux incorporado funciona bien, verifiqué las líneas con un alcance. También puedo leer las configuraciones que escribo en los registros de ellos más adelante.

¿Me falta algo en mi secuencia de configuración hasta ahora o es probable que me enfrente a un problema de hardware?

Editar

El dispositivo Uart envía aproximadamente un byte por segundo, por defecto 0x78 . Contiene un pequeño microcontrolador, pero nada que pueda modificar. Sin embargo, puedo leer el dispositivo perfectamente cuando lo conecto directamente a un puerto Uart de mi módulo incorporado.

Esquema

simular este circuito : esquema creado usando CircuitLab

    
pregunta bunto1

0 respuestas

Lea otras preguntas en las etiquetas