Que tal geniusuvi,
Efectivamente como mencionas, esa es la operación de estos expansores de puertos. Es decir con un solo CS puede seleccionar cada uno de ellos, ya que estos cuentan con un mecanismo de detección de dirección basado en tres pines externos (A0, A1 y A2), pudiendo así accesar a cada uno de ellos de manera individual en un array de hasta 8 en el mismo bus, compartiendo CS, MOSI, MISO y SCLK.
Ahora bien, una vez que configuras el expansor MCP23S17, si los puertos que configures como salidas serán de salida y si sacaste un dto por ahí, entonces el dato se mantiene despues de qeu ya no esté seleccionado. Lo mismo sucede si el puerto es de entrada, será de entrada y se quedará así a menos que le indiques otra cosa.
Con respecto a cómo es que cada dispositivo reconoce su dirección, bueno es muy muy simple: Despues de poner el CS en estado bajo, todos tus MCP23S17 están quasi habilitados, por así deciro, ya que en ese momento todos están listos a recibir los primeros 8 bits los cuales sirven para saber que los estas llamando, en eseos 8 bits están los tres bits de dirección externa (A0, A1 y A2) y si estos concuerdan entonces en ese momento se habilita o activa solamente uno, los demas se mantienen inactivos. Todo esto se explica en la página 15 del datasheet. El primer dato que debes enviar es: 1010(A2)(A1)(A0)R/W. En el últomo bit le dices si vas a leer o a escribir un registro interno, páagina 16 del datasheet.
Ahora bien, por default no reconocen la dirección necesitas habilitar el reconocimiento de la dirección. Lo cual se logra colocando en 1, el bit HAEN del registro de configuración interno (que tiene la dirección de registro 0x05). Una vez activado este registro entonces cada exoansor MCP23S17 únicamente responderá si concuerda la dirreción, de lo contrario, si no lo habilitas todos los MCP23S17 se activarán al mismo tiempo. Esto está en las páginas 20 y 21 del datasheet.
Cabe recordar que la configuración de los MCP se mantiene mientras están energizados, si por alguna razón estos se desconectan del voltaje de alimentación, su configuración se pierde.
Espero y esto te ayude a responder tus preguntas.
elreypic.