Tested 20m and LSB

This commit is contained in:
Sebastian 2023-08-18 12:13:58 +02:00
parent 929df22f4e
commit 4878a1a771
2 changed files with 23 additions and 41 deletions

View File

@ -41,6 +41,7 @@ mod app {
i2c::{self, I2c},
pac::{ADC1, DMA1, DMA2, I2C1, SPI1, TIM2, TIM4},
prelude::*,
qei,
spi::{self, Spi},
timer::{
self, Channel, Channel1, Channel3, ChannelBuilder, CounterHz, Event, PwmHz, CCR, CCR3,
@ -124,6 +125,15 @@ mod app {
let board_led = gpioc.pc13.into_push_pull_output();
/*
let enc_a = gpioa.pa5.into_input();
let enc_b = gpiob.pb3.into_input();
let encoder = qei::Qei::new(cx.device.TIM2, (enc_a, enc_b));
defmt::info!("Encoder Setup done");
*/
let scl = gpiob.pb6.into_alternate_open_drain();
let sda = gpiob.pb7.into_alternate_open_drain();
let mut i2c = i2c::I2c::new(
@ -137,16 +147,24 @@ mod app {
let mut pll = si5153::Si5153::new(&i2c);
pll.init(&mut i2c, 25000000, 800000000, 800000000);
/*
let phase = 100;
let freq = 7_100_000;
*/
let phase = 36;
let freq = 14_125_000;
pll.init(&mut i2c, 25_000_000, freq * phase, freq * phase);
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS0, si5153::PLL::A);
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS1, si5153::PLL::A);
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS2, si5153::PLL::B);
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS0, 8_000_000);
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS0, freq);
pll.set_ms_phase(&mut i2c, si5153::Multisynth::MS0, 0);
pll.enable_ms_output(&mut i2c, si5153::Multisynth::MS0);
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS1, 8_000_000);
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS1, freq);
pll.set_ms_phase(&mut i2c, si5153::Multisynth::MS1, 100);
pll.enable_ms_output(&mut i2c, si5153::Multisynth::MS1);
@ -358,7 +376,8 @@ mod app {
cx.shared.audio_buffer.lock(|buffer| {
let audio_buffer = buffer.take().unwrap();
for idx in 0..samples.len() {
let filtered = usb_filter.compute(samples[idx]);
//let filtered = usb_filter.compute(samples[idx]);
let filtered = usb_filter.compute(Complex::new(samples[idx].im, samples[idx].re));
fft_input[idx] = samples[idx];
audio_buffer[idx] = ((filtered.re * (audio_max_duty as f32)) * 3.0f32) as u16;

View File

@ -1,37 +0,0 @@
#!/usr/bin/env python3
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np
def main():
fs = 6400.0
coeffs = signal.firls(63, (0, 1150, 1200, fs/2), (1, 1, 0, 0), fs=fs)
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
freqs, response = signal.freqz(coeffs, worN=freq_space)
response = 10 * np.log(abs(response))
plt.plot(fs/2*freqs/(np.pi), response)
plt.grid()
plt.show()
f0 = (1200 + 50) / fs
complex_coeffs = []
for n in range(0, len(coeffs)):
complex_coeffs += [coeffs[n] * np.exp(1j * 2 * np.pi * f0 * n)]
complex_coeffs = np.array(complex_coeffs)
print(complex_coeffs)
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
freqs, response = signal.freqz(complex_coeffs, worN=freq_space)
response = 10 * np.log(abs(response))
plt.plot(fs/2*freqs/(np.pi), response)
plt.grid()
plt.show()
if __name__ == '__main__':
main()