2023-03-12 03:25 AM
I have a test running on a Nucleo-H743ZI2 board which consist on a SPI master and a SPI slave sending data to each other. In particular, the master sends the slave the following sequence: {0xaaaaaaaa, 0x55555555} and the slave sends the master the opposite one: {0x55555555, 0xaaaaaaaa} (as you can see, it is all 0b01010101...01).
At 12.5 MHz, everything works fine.
However, at 25MHz, the master receives corrupted data (the slave receives the data perfectly fine). Specifically, it receives data like: {575fffff, eafafaae} or {577fffff, eaaaaaaa}. As you can see, the corruption seems to always consist on having spurious 1s.
I have worked this out by adding a pull down resistor to the MISO line. With this, I'm able to reach 25MHz, but 50MHz will make all the tests fail.
Note: the breadboard and wires I'm using might not be of the best quality.
What can be producing this? Is it stray capacitance?
If so, I have read that to know which pull-down resistor I should choose, I need to know the input impedance of the I/O I'm pulling down, because the resistor will be based on that. I have found the electrical characteristics table for my SoC, see https://www.st.com/resource/en/datasheet/stm32h743vi.pdf, electrical characteristics. However, I don't find 'input impedance' in these tables. Where can I find it?