3 ms·
Bit-banging isn’t the right term because the toggling isn’t done by the main CPU. The RP series has programmable PIO units which handle the low level timing and
by Aurornis 1y ago
Bit-banging isn’t the right term because the toggling isn’t done by the main CPU. The RP series has programmable PIO units which handle the low level timing and line toggling. The CPU communicates with the small program running on the PIO.
- bri3d 1y agoIs there some rule that "bit banging" must refer to a primary CPU? I still think it's a good name for "implementing a protocol using instructions that run on a programmable core"; it distinguishes from using dedicated hardware that implements the logic at the gate level / in RTL.
- bragr 1y ago>Bit banging is a term of art that describes a method of digital data transmission as using general-purpose input/output (GPIO) instead of computer hardware that is intended specifically for data communication. [1] I guess it depends on whether you count the PIO as "general purpose IO" or specific chip for data communication. The ability to run custom programs on them sort of pushes it away from general purpose IO and towards something like a network card that has its own firmware and compute. I think in this case it is fair to say it is debatable. [1] https://en.wikipedia.org/wiki/Bit_banging https://en.wikipedia.org/wiki/Bit_banging
- superxpro12 1y agoBit banging is software emulation of a communication protocol or digital waveform (PWM, etc). Using the 'bit-bang' label applies when software was written to implement the waveform. If its using a cpu, or co-processor, is irrelevant IMO because in either case instruction are still being executed to generate the waveform.
- ssl-3 1y agoA network card with its own firmware and compute generally uses a network processor[1], right? A widget that is optimized at the silicon level to put fairly specific pegs into fairly a specific holes? The RP PIO is not a network processor, and doesn't have that kind of optimization. It is a blank slate that is devoid of intended purpose. It can be used to accomplish lots of different and very arbitrary things. They seem like very different things to me. [1]: https://en.wikipedia.org/wiki/Network_processor https://en.wikipedia.org/wiki/Network_processor