currently this is more of a theoretical question, but i have an idea of something that might utilize this (3 QSPI devices)
Ive been looking at the Nrf5340 and the nrf7002 that both use QSPI
I've also noted that it appears, unless I'm mistaken, you cant implement matter without external memory
I have noticed the existence of 6 channel multiplexers e.g TS3A2718E
and displays that also use QSPI e.g ones based on EVE4 BT817Q such as RVT50HQBFWCA0
As the n5340 only has one CS pin it is limited by itself to one device
ignoring the issue of shared bandwidth limits
It strikes me that it is at least theoretically possible to multiplex the bus using one, or more? TS3A2718E or similar devices
e.g
the multiplexer(s) could be controlled via a single GPIO, as above
or and I2C/SPI GPIO Expander e.g (gpio expander was just first in list)
Assuming i haven't missed something ( i haven't found a suitable 3 port 6 channel multiplexer)
The some questions i can think of are
- does/could? zephyr/device tree allow SPI multiplexers with sub device nodes?
e.g&qspi { ... multiplexer { .... mx25r64: mx25r6435f@0 { reg = <0>; .... }; nrf70: nrf7001@1 { reg = <1>; .... }; }; - would the nrf5340 hardware have any issues with this (assuming the multiplexer defaults to the flash chip)?
- what considerations would have to be made for programming the flash?
- can/do the application/network cores share QSPI if using nrf7002?
I'm thinking the driver would be relatively simple (pull up down pins to select correct device) but It would
something to tell it to do this, I'm not that familiar with kernel internals to know the specifics, but i believe spi controller drivers must do something similar for chip select, as is pulled low on the correct CS pin to select device
If there is a better place for this let me know
thx