I've never used a real logic analyzer and I can't afford one, but I thought about trying to make a simple one using an Arduino blue pill. They have ten 12-bit ADCs. I want to actually use an ADC to get the voltage level and then use software, based on whether you're talking TTL, CMOS, whatever, to decide the actual logic level of the line.
So having never used one, I honestly don't know much about them in general, but I know what I want out of it, and so that's what I'm going with. For example, I want to have the option of being clock-based, where you tap the clock of whatever it is you're analyzing and that decides when the analyzer samples the data. Optionally you can have it free-running and polling the values are intervals.
Essentially the Arduino will just do data collection, though. I'll send all the data via serial to my computer to analyze real-time. So beyond capturing the voltages, either based on a clock or based on a sample frequency, it's not doing a whole lot.
One of the issues I have is voltage level translation. The blue pill is 3.3V and I need to be able to handle higher voltages (primarily 5V). I don't want to clip the levels. Like if it's 4V, I don't want to clip it at 3.3V.
I can think of a few options: One is to pick a maximum voltage, say 10V, and say that's what I scale everything against and then in the software, you tell it what your logic voltage is and then it'll calculate the logic levels based on that.
So basically just take whatever the input is, divide by 3.33. And for simplicity this is the way I've been leaning. Wondering if I should use a voltage divider or an opamp to scale the voltage?
The other way to let the user set the reference voltage and then scale based on that, but that seems a lot more complicated.
Am I missing any obvious issues?
So having never used one, I honestly don't know much about them in general, but I know what I want out of it, and so that's what I'm going with. For example, I want to have the option of being clock-based, where you tap the clock of whatever it is you're analyzing and that decides when the analyzer samples the data. Optionally you can have it free-running and polling the values are intervals.
Essentially the Arduino will just do data collection, though. I'll send all the data via serial to my computer to analyze real-time. So beyond capturing the voltages, either based on a clock or based on a sample frequency, it's not doing a whole lot.
One of the issues I have is voltage level translation. The blue pill is 3.3V and I need to be able to handle higher voltages (primarily 5V). I don't want to clip the levels. Like if it's 4V, I don't want to clip it at 3.3V.
I can think of a few options: One is to pick a maximum voltage, say 10V, and say that's what I scale everything against and then in the software, you tell it what your logic voltage is and then it'll calculate the logic levels based on that.
So basically just take whatever the input is, divide by 3.33. And for simplicity this is the way I've been leaning. Wondering if I should use a voltage divider or an opamp to scale the voltage?
The other way to let the user set the reference voltage and then scale based on that, but that seems a lot more complicated.
Am I missing any obvious issues?