This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Is a 3-bit synchronous (3 data lines + Clock) parallel input at 16.368 MHz feasible?

I'm evaluating the nRF52840 for a new project.

I have read a number of previous posts that show that I can't achieve what I want, but I want to be sure as the 840 is ideal for our application aside from this limitation.

My problem is that I need to acquire 2-5ms of data from a sensor with a 3 bit parallel interface clocked at 16.384Mhz (around ~32kilobytes of data with 3bits of data stored per byte of RAM).

I'm not concerned about the power usage during capture, so I don't require easyDMA or power saving features at this point.

1) I'm not sure that the GPIO peripheral on the 840 has the ability to be externally clocked, and as I can't find any reference in the datasheet I'm assuming it can't be.  Can I clock the entire 840 with a 16.384Mhz or 32.768Mhz clock during the acquisition process ( from what I understand the RCC subsystem seems to only use a 32Mhz crystal). 

2) If the QSPI peripheral was more flexible that would be perfect, but without a true QSPI interface on the sensor, don't think it is possible. Should I investigate further?

3) The data rate isn't adjustable, but if I have to, I can read only 1 bit of the 3 bits, discarding the 2 LSBs, thus the interface would be similar to a 16.384Mhz  synchronous (clocked) serial interface.

Should I be looking for another solution, or am I missing something?

(edit: I realize that the chip needs HSE at 32Mhz for BT, NFC etc. I'll solve this problem later)

  • 1) No, I don't think so. I think you might be able to run the the MCU off an external 32.768MHz crystal, but a radio protocol is out of the question. Either way it's outside the specifications.

    2) I need more information on the protocol and the sensor device in order to answer this one.

    3) I do not think this is possible. At 16MHz you're at 1/4 the CPU speed which means that you only have 4 CPU cycles to read the state of a single pin, store it, and then clear the interrupt. I'll need to find the delay from the clock interrupt fires until you can start to execute an ISR as well as the time from a GPIO state change until the registers update, etc. 

    We need to know what sensor and protocol you're asking for. 

  • 1) I realize I can't use the radio without a 32Mhz HSE, I should be able to switch HSE frequencies in the future (with the MCU stopped obviously)

    2) The sensor is under NDA. There is not really a protocol for the sensor, the data interface is just a 3-bit ADC sampled at 16.384Mhz.

    After powering up the sensor, it starts outputting 3 bit signed data over a simple parallel interface (3 data lines and a clock line). There is no control protocol, just one way raw data on this bus. After taking a small sample of the data (2ms), cut power to the sensor. It's not like SPI interface or a UART protocol, just raw data.

  • I'll talk to some guys tomorrow, and see what they say. 

    You might be able to use some external shift registers to capture the bitstreams. 

Related