Morning Gents, first off let me apologise if coming here with a question on my first post is bad form.
I'm looking for some advice. I'm working on a little project where I'm building a device that will need to speak to a number of hot swapable peripherals. These peripherals could be anything from a sensor, a controller or a display. The idea is that these peripherals can be swapped and changed at will. There're all proprietary devices so I've got complete control over how they communicate but there's the question.
The design requires me to be able to talk to up to eight devices although the solution should be scaleble enough to cope with any number.
All devices are using a 16F690 (no real reason other than that I've got a ton of the little blighters kicking around). The original idea was to use UART and a DEMUX on both TX and RX lines. That works to a point but the line seems to bounce around too much and making it unreliable.
Using a bus based protocol isn't going to work because, as I said these devices are all proprietary and if this project takes off, will be mass produced. I don't really have a way of burning an address into each one individually.
So what are my options? I'm currently thinking of using a 1-wire protocol, connected to each device individually in a star topography. An alternative would be to use a 1-wire bus and a chip select line running to each individual device but I don't really see any advantage to this over the star. But is there a better way to do this?
Things you probably need to know,
Thanks all...
I'm looking for some advice. I'm working on a little project where I'm building a device that will need to speak to a number of hot swapable peripherals. These peripherals could be anything from a sensor, a controller or a display. The idea is that these peripherals can be swapped and changed at will. There're all proprietary devices so I've got complete control over how they communicate but there's the question.
The design requires me to be able to talk to up to eight devices although the solution should be scaleble enough to cope with any number.
All devices are using a 16F690 (no real reason other than that I've got a ton of the little blighters kicking around). The original idea was to use UART and a DEMUX on both TX and RX lines. That works to a point but the line seems to bounce around too much and making it unreliable.
Using a bus based protocol isn't going to work because, as I said these devices are all proprietary and if this project takes off, will be mass produced. I don't really have a way of burning an address into each one individually.
So what are my options? I'm currently thinking of using a 1-wire protocol, connected to each device individually in a star topography. An alternative would be to use a 1-wire bus and a chip select line running to each individual device but I don't really see any advantage to this over the star. But is there a better way to do this?
Things you probably need to know,
- A number of the peripheral devices have already been built and tested so I would rather not have to make any changes to the physical design if possible although firmware changes are fine.
- The devices are connected using USB cables so after power, that's 2 lines to play with going to the PICs' UART Tx and Rx pins.
- All peripheral devices are slaves and like all good children, wont speak unless spoken to.
- Data transfer rates can all be fairly slow and the kit I'm working on at the moment isn't much more than a hub and doesn't do much else than throw data around so I'm happy to bit bang.
Thanks all...