First post on this site, which seems about right, as I'm also very new to microcontrollers.
I'm currently prototyping a data acquisition product, which up until very recently, was going to rely on the underlying Embedded Linux OS for acquiring the data (in conjunction with processing, user input, GUI, storage, etc.). Through extensive testing, I've come to the conclusion that Linux really isn't suited to my particular application, so I'm turning my attention to microcontrollers.
The requirements of my device, which would need to be supported by the MCU are as follows:
- 32 analogue inputs, preferably 16-bit, capable of at least 1000 samples per second per channel.
- 32 digital inputs, capable of 1000 samples per second per channel, with hardware-driven, low latency interrupts
- As many CAN channels as possible
- As many SPI channels as possible
The analogue inputs are somewhat self explanatory. The digital inputs can be configured by the end user as either simple ON/OFF measurement, or pulse measurement (frequency, duty cycle, etc.). As such, discrete hardware interrupts on all 32 inputs are required. This is an area in which working with Linux was problematic, as userspace interrupts are essentially polls to the kernel, and carry significant latency between the interrupt occurring, and the handler being called by the scheduler. I'm hoping an MCU will provide much more efficient and fast interrupts for this purpose.
In terms of peripherals, as many CAN and SPI channels as possible would be ideal. Similarly, a high speed bus for transferring the captured data to my SoM is required. In my mind a parallel interface would probably make sense for this purpose, but I'm happy to be proven wrong if serial is preferred. In terms of storage, I haven't yet calculated the required memory size, so I'm open to some suggestion on that one (cost vs. benefit). Ideally I'd store x readings in a buffer, and routinely transfer the data to the SoM. I imagine a couple of MB would be suitable for this purpose?
As mentioned earlier, I'm completely new to microcontrollers, so don't even know where to start looking. I've developed for desktop and embedded ARM, but haven't even really played with an Arduino, so this is all very new to me.
Any guidance (product families, readings, blog posts, etc.) at this stage would be greatly appreciated!
EDIT: I forgot to mention above; the 32 analogue and 32 digital inputs don't have to be included in the MCU itself, I can't imagine there are too many options with that many ADCs available, I fully expect for the MCU to interface with external ADCs and IO expanders to facilitate the 64 inputs (via SPI, I2C, etc.).