forked from M-Labs/artiq
spi: cleanup, add frequency_to_div()
This commit is contained in:
parent
d973eb879f
commit
162ecdd574
|
@ -1,4 +1,4 @@
|
||||||
from artiq.language.core import (kernel, seconds_to_mu, now_mu,
|
from artiq.language.core import (kernel, portable, seconds_to_mu, now_mu,
|
||||||
delay_mu, int)
|
delay_mu, int)
|
||||||
from artiq.language.units import MHz
|
from artiq.language.units import MHz
|
||||||
from artiq.coredevice.rtio import rtio_output, rtio_input_data
|
from artiq.coredevice.rtio import rtio_output, rtio_input_data
|
||||||
|
@ -57,6 +57,10 @@ class SPIMaster:
|
||||||
# To chain transfers together, new data must be written before
|
# To chain transfers together, new data must be written before
|
||||||
# pending transfer's read data becomes available.
|
# pending transfer's read data becomes available.
|
||||||
|
|
||||||
|
@portable
|
||||||
|
def frequency_to_div(self, f):
|
||||||
|
return int(1/(f*self.ref_period)) + 1
|
||||||
|
|
||||||
@kernel
|
@kernel
|
||||||
def set_config(self, flags=0, write_freq=20*MHz, read_freq=20*MHz):
|
def set_config(self, flags=0, write_freq=20*MHz, read_freq=20*MHz):
|
||||||
"""Set the configuration register.
|
"""Set the configuration register.
|
||||||
|
@ -105,9 +109,8 @@ class SPIMaster:
|
||||||
:param write_freq: Desired SPI clock frequency during write bits.
|
:param write_freq: Desired SPI clock frequency during write bits.
|
||||||
:param read_freq: Desired SPI clock frequency during read bits.
|
:param read_freq: Desired SPI clock frequency during read bits.
|
||||||
"""
|
"""
|
||||||
write_div = round(1/(write_freq*self.ref_period))
|
self.set_config_mu(flags, self.frequency_to_div(write_freq),
|
||||||
read_div = round(1/(read_freq*self.ref_period))
|
self.frequency_to_div(read_freq))
|
||||||
self.set_config_mu(flags, write_div, read_div)
|
|
||||||
|
|
||||||
@kernel
|
@kernel
|
||||||
def set_config_mu(self, flags=0, write_div=6, read_div=6):
|
def set_config_mu(self, flags=0, write_div=6, read_div=6):
|
||||||
|
@ -174,7 +177,7 @@ class SPIMaster:
|
||||||
delay_mu(3*self.ref_period_mu)
|
delay_mu(3*self.ref_period_mu)
|
||||||
|
|
||||||
@kernel
|
@kernel
|
||||||
def write(self, data):
|
def write(self, data=0):
|
||||||
"""Write data to data register.
|
"""Write data to data register.
|
||||||
|
|
||||||
* The ``data`` register and the shift register are 32 bits wide.
|
* The ``data`` register and the shift register are 32 bits wide.
|
||||||
|
|
Loading…
Reference in New Issue