From 9413befe3b2387cee8704350250cc14f3d3bb8fd Mon Sep 17 00:00:00 2001 From: Huw Percival Date: Mon, 28 Nov 2022 15:02:26 +0000 Subject: [PATCH 01/11] Update with some fixes for 3B mclk phase issue Add to readme to explain the issue and the manual steps required to have a well behaving pi Update setup.sh so it should work in the 48kHz by default (before the phase issue was present at boot) --- CHANGELOG.md | 4 ++++ README.md | 17 +++++++++++++++++ setup.sh | 9 +++++++++ 3 files changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 488fd53..f61c98d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # VocalFusion Raspberry Pi Setup Change Log +## 5.4.0 + + * Fix and document MCLK phase issue found on rapberry pi 3b + ## 5.3.0 * Fix setup_dac.py script for XVF3615 diff --git a/README.md b/README.md index 40bd3c8..9800028 100644 --- a/README.md +++ b/README.md @@ -104,3 +104,20 @@ For XVF3510-UA and XVF361x-UA devices these actions will be done as well: Wait for the script to complete the installation. This can take several minutes. 5. Reboot the Raspberry Pi. + +## Important note on clocks + +The I2S/PCM driver that is provided with rasbian does not support an MCLK output. However the +driver does have full ability to set the BCLK and LRCLK correctly for a given sample rate. As +the driver does not know about the MCLK it is likely to choose dividers for the clocks generators +which are not phase locked to the MCLK. The script in this repo gets around this problem by +configuring the i2s driver to a certain frequency and then overriding the clock registers to force +a phase locked frequency. + +This will work until a different sample rate is chosen by an application, then the I2S driver will +write it's own value to the clocks and the MCLK will no longer be phase locked. To solve this problem +the following steps must be taken before connecting an XVF device with a different sample rate: + +1. Take a short recording at the new sample rate: `arecord -c2 -fS32_LE -r{sample_rate} -s1 -Dhw:sndrpisimplecar` +2. For 48kHz `./resources/clk_dac_setup/setup_blk`, for 16kHz `./resources/clk_dac_setup/setup_blk` + diff --git a/setup.sh b/setup.sh index 2cc927c..9d41f93 100755 --- a/setup.sh +++ b/setup.sh @@ -225,6 +225,15 @@ if [[ -n "$I2S_MODE" ]]; then echo "# Run Alsa at startup so that alsamixer configures" >> $i2s_driver_script echo "arecord -d 1 > /dev/null 2>&1" >> $i2s_driver_script echo "aplay dummy > /dev/null 2>&1" >> $i2s_driver_script + + if [[ "$I2S_MODE" = "master" ]]; then + echo "# Preconfigure i2s clocks to 48kHz" >> $i2s_driver_script + # wait a bit as it doesn't work otherwise, this is probably caused + # by the same process that is deleting .asoundrc + echo "sleep 15" >> $i2s_driver_script + echo "arecord -Dhw:sndrpisimplecar,0 -c2 -fS32_LE -r48000 -s1 /dev/null" >> $i2s_driver_script + echo "sudo $RPI_SETUP_DIR/resources/clk_dac_setup/setup_bclk" >> $i2s_driver_script + fi fi if [[ -n "$DAC_SETUP" ]]; then From 1b23cc65d427baf6d84f5aa71f4c6a6e28e5d5cc Mon Sep 17 00:00:00 2001 From: Huw Percival <107470836+xhuw@users.noreply.github.com> Date: Mon, 28 Nov 2022 15:57:17 +0000 Subject: [PATCH 02/11] Fix typo in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f61c98d..a16ac26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 5.4.0 - * Fix and document MCLK phase issue found on rapberry pi 3b + * Fix and document MCLK phase issue found on raspberry pi 3b ## 5.3.0 From 5f2a207d676a57b219386be90e9cdb8c1444cbb8 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 09:55:38 +0000 Subject: [PATCH 03/11] Initial support for xvf3800 HW --- resources/clk_dac_setup/setup_dac.py | 92 +++++++++++++++++++++------- 1 file changed, 69 insertions(+), 23 deletions(-) diff --git a/resources/clk_dac_setup/setup_dac.py b/resources/clk_dac_setup/setup_dac.py index 3c40794..fe6f263 100644 --- a/resources/clk_dac_setup/setup_dac.py +++ b/resources/clk_dac_setup/setup_dac.py @@ -1,44 +1,42 @@ #!usr/bin/python # Copyright (c) 2018-2022, XMOS Ltd, All rights reserved -#run this on the raspberry pi to program the DAC +#run this on the raspberry pi to program setup the IO expander and program the DAC (non xvf3800) import argparse import smbus import time -def setup_dac(args): +def setup_io_expander(bus, args): """ - Function to configure DAC of XVF boards + Function to setup the I2C IO expander of XVF boards Args: + bus - I2C access object args - command line arguments Returns: None """ - - samFreq = 48000 - bus = smbus.SMBus(1) - + # I2C expander bus address for XVF36XX and XVF3800 with PCAL6408A expander device I2C_EXPANDER_ADDRESS = 0x20 - if "xvf36" in args.hw: + # I2C expander register addresses + I2C_EXPANDER_OUTPUT_PORT_REG = 0x01 + I2C_EXPANDER_CONFIGURATION_REG = 0x03 + I2C_EXPANDER_INTERRUPT_MASK_REG = 0x45 + + # I2C expander pin mapping + XVF_RST_N_PIN = 0 + INT_N_PIN = 1 + DAC_RST_N_PIN = 2 + BOOT_SEL_PIN = 3 + MCLK_OE_PIN = 4 + SPI_OE_PIN = 5 + I2S_OE_PIN = 6 + MUTE_PIN = 7 - # I2C expander register addresses - I2C_EXPANDER_OUTPUT_PORT_REG = 0x01 - I2C_EXPANDER_CONFIGURATION_REG = 0x03 - I2C_EXPANDER_INTERRUPT_MASK_REG = 0x45 - - # I2C expander pins - XVF_RST_N_PIN = 0 - INT_N_PIN = 1 - DAC_RST_N_PIN = 2 - BOOT_SEL_PIN = 3 - MCLK_OE_PIN = 4 - SPI_OE_PIN = 5 - I2S_OE_PIN = 6 - MUTE_PIN = 7 + if "xvf36" in args.hw: # Set pin values # set DAC_RST_N to 0 and enable level shifters on the I2C expander @@ -79,6 +77,36 @@ def setup_dac(args): bus.write_byte_data(I2C_EXPANDER_ADDRESS, I2C_EXPANDER_OUTPUT_PORT_REG, OUTPUT_PORT_MASK | (1< Date: Tue, 3 Jan 2023 10:47:51 +0000 Subject: [PATCH 04/11] Add support for xvf3800 in main bash script --- setup.sh | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/setup.sh b/setup.sh index 9d41f93..1978788 100755 --- a/setup.sh +++ b/setup.sh @@ -6,7 +6,7 @@ I2S_MODE= XMOS_DEVICE= INSTALL_ATTEMPT_NUM_MAX=10 # Valid values for XMOS device -VALID_XMOS_DEVICES="xvf3100 xvf3500 xvf3510-int xvf3510-ua xvf3600-slave xvf3600-master xvf3610-int xvf3610-ua xvf3615-int xvf3615-ua" +VALID_XMOS_DEVICES="xvf3100 xvf3500 xvf3510-int xvf3510-ua xvf3600-slave xvf3600-master xvf3610-int xvf3610-ua xvf3615-int xvf3615-ua xvf3800-intdev xvf3800-inthost xvf3800-ua"" PACKAGES_TO_INSTALL="python3-matplotlib python3-numpy libatlas-base-dev audacity libreadline-dev libncurses-dev" PACKAGES_TO_INSTALL_ONLY_FOR_UA="libusb-1.0-0-dev libevdev-dev libudev-dev" @@ -65,10 +65,9 @@ case $XMOS_DEVICE in I2S_MODE=slave ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf_xvf3510_ua ;; - xvf3510-int|xvf3610-int|xvf3615-int) I2S_MODE=master - DAC_SETUP=y + IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf_xvf3510_int ;; xvf3500) @@ -81,12 +80,22 @@ case $XMOS_DEVICE in ;; xvf3600-slave) I2S_MODE=master - DAC_SETUP=y + IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf ;; xvf3600-master) I2S_MODE=slave - DAC_SETUP=y + IO_EXP_AND_DAC_SETUP=y + ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf + # Note DAC is not setup for XVF3800 - the setup script takes an arg which will conditionally do this + xvf3800-intdev) + I2S_MODE=master + IO_EXP_AND_DAC_SETUP=y + ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf + ;; + xvf3800-inthost|xvf3800-ua) + I2S_MODE=slave + IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf ;; *) @@ -236,7 +245,7 @@ if [[ -n "$I2S_MODE" ]]; then fi fi -if [[ -n "$DAC_SETUP" ]]; then +if [[ -n "$IO_EXP_AND_DAC_SETUP" ]]; then pushd $RPI_SETUP_DIR/resources/clk_dac_setup/ > /dev/null make popd > /dev/null @@ -248,11 +257,11 @@ if [[ -n "$DAC_SETUP" ]]; then echo "sudo $RPI_SETUP_DIR/resources/clk_dac_setup/setup_bclk" >> $dac_and_clks_script fi # Note that only the substring xvfXXXX from $XMOS_DEVICE is used in the lines below - echo "python $RPI_SETUP_DIR/resources/clk_dac_setup/setup_dac.py $(echo $XMOS_DEVICE | cut -c1-7)" >> $dac_and_clks_script + echo "python $RPI_SETUP_DIR/resources/clk_dac_setup/setup_io_exp_and_dac.py $(echo $XMOS_DEVICE | cut -c1-7)" >> $dac_and_clks_script echo "python $RPI_SETUP_DIR/resources/clk_dac_setup/reset_xvf.py $(echo $XMOS_DEVICE | cut -c1-7)" >> $dac_and_clks_script fi -if [[ -n "$DAC_SETUP" ]]; then +if [[ -n "$IO_EXP_AND_DAC_SETUP" ]]; then audacity_script=$RPI_SETUP_DIR/resources/run_audacity.sh rm -f $audacity_script echo "#!/usr/bin/env bash" >> $audacity_script @@ -276,11 +285,11 @@ fi rm -f $crontab_file # Setup the crontab to restart I2S at reboot -if [ -n "$I2S_MODE" ] || [ -n "$DAC_SETUP" ]; then +if [ -n "$I2S_MODE" ] || [ -n "$IO_EXP_AND_DAC_SETUP" ]; then if [[ -n "$I2S_MODE" ]]; then echo "@reboot sh $i2s_driver_script" >> $crontab_file fi - if [[ -n "$DAC_SETUP" ]]; then + if [[ -n "$IO_EXP_AND_DAC_SETUP" ]]; then echo "@reboot sh $dac_and_clks_script" >> $crontab_file fi popd > /dev/null From 12ba9d8de87709b74ea50dba56523aa40b509ba8 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 10:52:05 +0000 Subject: [PATCH 05/11] Update docs and changelog --- CHANGELOG.md | 6 +++++ README.md | 24 +++++++++++++++++-- .../{setup_dac.py => setup_io_exp_and_dac.py} | 4 ++-- resources/clk_dac_setup/setup_mclk_bclk.c | 2 +- 4 files changed, 31 insertions(+), 5 deletions(-) rename resources/clk_dac_setup/{setup_dac.py => setup_io_exp_and_dac.py} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index a16ac26..e056c74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # VocalFusion Raspberry Pi Setup Change Log +## 5.5.0 + + * Add support for XVF3800 + * rename setup_dac.py to setup_io_exp_and_dac.py + * Fixed documentation to state use of 12.288MHz instead of 24.576MHz mclk + ## 5.4.0 * Fix and document MCLK phase issue found on raspberry pi 3b diff --git a/README.md b/README.md index 9800028..3891f15 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ This setup will perform the following operations: For XVF3510-INT devices these actions will be done as well: -- configure MCLK at 24576kHz from pin 7 (BCM 4) +- configure MCLK at 12288kHz from pin 7 (BCM 4) - configure I2S BCLK at 3072kHz from pin 12 (BCM18) - update the alias for Audacity - update the asoundrc file to support I2S devices @@ -32,6 +32,14 @@ For XVF361x-INT devices these actions will be done as well: - add a cron job to reset the device at boot up - add a cron job to configure the DAC at boot up +For XVF3800(ALL) devices these actions will be done as well: + +- configure MCLK at 12288kHz from pin 7 (BCM 4) +- configure I2S BCLK at 3072kHz from pin 12 (BCM18) +- update the alias for Audacity +- update the asoundrc file to support I2S devices +- add a cron job to reset the device at boot up + For XVF3510-UA and XVF361x-UA devices these actions will be done as well: - update the asoundrc file to support USB devices @@ -101,6 +109,18 @@ For XVF3510-UA and XVF361x-UA devices these actions will be done as well: ```./setup.sh xvf3615-int``` + For XVF3800-INTDEV devices, run the installation script as follows: + + ```./setup.sh xvf3800-intdev``` + + For XVF3800-INTHOST devices, run the installation script as follows: + + ```./setup.sh xvf3800-inthost``` + + For XVF3800-UA devices, run the installation script as follows: + + ```./setup.sh xvf3800-ua``` + Wait for the script to complete the installation. This can take several minutes. 5. Reboot the Raspberry Pi. @@ -119,5 +139,5 @@ write it's own value to the clocks and the MCLK will no longer be phase locked. the following steps must be taken before connecting an XVF device with a different sample rate: 1. Take a short recording at the new sample rate: `arecord -c2 -fS32_LE -r{sample_rate} -s1 -Dhw:sndrpisimplecar` -2. For 48kHz `./resources/clk_dac_setup/setup_blk`, for 16kHz `./resources/clk_dac_setup/setup_blk` +2. For 48kHz `./resources/clk_dac_setup/setup_blk`, for 16kHz `./resources/clk_dac_setup/setup_blk 16000` diff --git a/resources/clk_dac_setup/setup_dac.py b/resources/clk_dac_setup/setup_io_exp_and_dac.py similarity index 99% rename from resources/clk_dac_setup/setup_dac.py rename to resources/clk_dac_setup/setup_io_exp_and_dac.py index fe6f263..03179d0 100644 --- a/resources/clk_dac_setup/setup_dac.py +++ b/resources/clk_dac_setup/setup_io_exp_and_dac.py @@ -130,8 +130,8 @@ def setup_dac(bus): DEVICE_ADDRESS = 0x18 # TLV320DAC3101 Register Addresses # Page 0 - DAC3101_PAGE_CTRL = 0x00 # Register 0 - Page Control - DAC3101_SW_RST = 0x01 # Register 1 - Software Reset + DAC3101_PAGE_CTRL = 0x00 # Register 0 - Page Control + DAC3101_SW_RST = 0x01 # Register 1 - Software Reset DAC3101_CLK_GEN_MUX = 0x04 # Register 4 - Clock-Gen Muxing DAC3101_PLL_P_R = 0x05 # Register 5 - PLL P and R Values DAC3101_PLL_J = 0x06 # Register 6 - PLL J Value diff --git a/resources/clk_dac_setup/setup_mclk_bclk.c b/resources/clk_dac_setup/setup_mclk_bclk.c index 0030216..bb7eccf 100644 --- a/resources/clk_dac_setup/setup_mclk_bclk.c +++ b/resources/clk_dac_setup/setup_mclk_bclk.c @@ -11,7 +11,7 @@ */ /* - Set the general purpose clk GPCLK0 (gpio4) to 24.576 MHz, + Set the general purpose clk GPCLK0 (gpio4) to 12.288 MHz, and PCM CLK to 3.072 MHz, using PLLD as source. */ From 7d1ab52dd123cc3ed3594b7e235e9841ffeaf180 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 11:14:01 +0000 Subject: [PATCH 06/11] Change PR target to 5.4.0 release --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e056c74..44477e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,10 @@ # VocalFusion Raspberry Pi Setup Change Log -## 5.5.0 +## 5.4.0 * Add support for XVF3800 * rename setup_dac.py to setup_io_exp_and_dac.py * Fixed documentation to state use of 12.288MHz instead of 24.576MHz mclk - -## 5.4.0 - * Fix and document MCLK phase issue found on raspberry pi 3b ## 5.3.0 From f290b295ec6ad3610acd27e09a6a71422193a557 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 13:07:31 +0000 Subject: [PATCH 07/11] remove 3800-ua --- setup.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index 1978788..674ced1 100755 --- a/setup.sh +++ b/setup.sh @@ -6,7 +6,7 @@ I2S_MODE= XMOS_DEVICE= INSTALL_ATTEMPT_NUM_MAX=10 # Valid values for XMOS device -VALID_XMOS_DEVICES="xvf3100 xvf3500 xvf3510-int xvf3510-ua xvf3600-slave xvf3600-master xvf3610-int xvf3610-ua xvf3615-int xvf3615-ua xvf3800-intdev xvf3800-inthost xvf3800-ua"" +VALID_XMOS_DEVICES="xvf3100 xvf3500 xvf3510-int xvf3510-ua xvf3600-slave xvf3600-master xvf3610-int xvf3610-ua xvf3615-int xvf3615-ua xvf3800-intdev xvf3800-inthost" PACKAGES_TO_INSTALL="python3-matplotlib python3-numpy libatlas-base-dev audacity libreadline-dev libncurses-dev" PACKAGES_TO_INSTALL_ONLY_FOR_UA="libusb-1.0-0-dev libevdev-dev libudev-dev" @@ -87,13 +87,14 @@ case $XMOS_DEVICE in I2S_MODE=slave IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf + ;; # Note DAC is not setup for XVF3800 - the setup script takes an arg which will conditionally do this xvf3800-intdev) I2S_MODE=master IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf ;; - xvf3800-inthost|xvf3800-ua) + xvf3800-inthost) I2S_MODE=slave IO_EXP_AND_DAC_SETUP=y ASOUNDRC_TEMPLATE=$RPI_SETUP_DIR/resources/asoundrc_vf From ff6d2b94d19e4a20b93041d8a214318de8c2c751 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 13:08:03 +0000 Subject: [PATCH 08/11] remove 3800ua from readme --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 3891f15..16e77aa 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,6 @@ For XVF3510-UA and XVF361x-UA devices these actions will be done as well: ```./setup.sh xvf3800-inthost``` - For XVF3800-UA devices, run the installation script as follows: - - ```./setup.sh xvf3800-ua``` Wait for the script to complete the installation. This can take several minutes. From 73cd2b7e7dd4249c45de0c8db974d05969cce782 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 13:52:37 +0000 Subject: [PATCH 09/11] Small docs enhancement --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 16e77aa..b43386d 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ For XVF3800(ALL) devices these actions will be done as well: - update the alias for Audacity - update the asoundrc file to support I2S devices - add a cron job to reset the device at boot up +- add a cron job to configure the IO expander at boot up For XVF3510-UA and XVF361x-UA devices these actions will be done as well: From 5c89476290ad7e789d68f9bb56368ce102347d2f Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 14:21:05 +0000 Subject: [PATCH 10/11] Minor typos and copyright date --- README.md | 6 +++--- resources/clk_dac_setup/setup_io_exp_and_dac.py | 2 +- resources/clk_dac_setup/setup_mclk_bclk.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b43386d..c7983cb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ This setup will perform the following operations: For XVF3510-INT devices these actions will be done as well: - configure MCLK at 12288kHz from pin 7 (BCM 4) -- configure I2S BCLK at 3072kHz from pin 12 (BCM18) +- configure I2S BCLK at 3072kHz from pin 12 (BCM 18) - update the alias for Audacity - update the asoundrc file to support I2S devices - add a cron job to reset the device at boot up @@ -26,7 +26,7 @@ For XVF3510-INT devices these actions will be done as well: For XVF361x-INT devices these actions will be done as well: - configure MCLK at 12288kHz from pin 7 (BCM 4) -- configure I2S BCLK at 3072kHz from pin 12 (BCM18) +- configure I2S BCLK at 3072kHz from pin 12 (BCM 18) - update the alias for Audacity - update the asoundrc file to support I2S devices - add a cron job to reset the device at boot up @@ -35,7 +35,7 @@ For XVF361x-INT devices these actions will be done as well: For XVF3800(ALL) devices these actions will be done as well: - configure MCLK at 12288kHz from pin 7 (BCM 4) -- configure I2S BCLK at 3072kHz from pin 12 (BCM18) +- configure I2S BCLK at 3072kHz from pin 12 (BCM 18) - update the alias for Audacity - update the asoundrc file to support I2S devices - add a cron job to reset the device at boot up diff --git a/resources/clk_dac_setup/setup_io_exp_and_dac.py b/resources/clk_dac_setup/setup_io_exp_and_dac.py index 03179d0..30a20bd 100644 --- a/resources/clk_dac_setup/setup_io_exp_and_dac.py +++ b/resources/clk_dac_setup/setup_io_exp_and_dac.py @@ -1,5 +1,5 @@ #!usr/bin/python -# Copyright (c) 2018-2022, XMOS Ltd, All rights reserved +# Copyright (c) 2018-2023, XMOS Ltd, All rights reserved #run this on the raspberry pi to program setup the IO expander and program the DAC (non xvf3800) diff --git a/resources/clk_dac_setup/setup_mclk_bclk.c b/resources/clk_dac_setup/setup_mclk_bclk.c index bb7eccf..9297f7a 100644 --- a/resources/clk_dac_setup/setup_mclk_bclk.c +++ b/resources/clk_dac_setup/setup_mclk_bclk.c @@ -1,4 +1,4 @@ -// Copyright (c) 2019, XMOS Ltd, All rights reserved +// Copyright (c) 2019-2023, XMOS Ltd, All rights reserved /* Trimmed down version of the minimal_clk.c file present From dd5938b31e58a9da07a2027eee836a3a529c85f6 Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 3 Jan 2023 14:23:04 +0000 Subject: [PATCH 11/11] Comment --- resources/clk_dac_setup/setup_io_exp_and_dac.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/clk_dac_setup/setup_io_exp_and_dac.py b/resources/clk_dac_setup/setup_io_exp_and_dac.py index 30a20bd..4df2aab 100644 --- a/resources/clk_dac_setup/setup_io_exp_and_dac.py +++ b/resources/clk_dac_setup/setup_io_exp_and_dac.py @@ -1,7 +1,7 @@ #!usr/bin/python # Copyright (c) 2018-2023, XMOS Ltd, All rights reserved -#run this on the raspberry pi to program setup the IO expander and program the DAC (non xvf3800) +# run this on the raspberry pi to setup the IO expander and program the DAC (DAC setup for non-xvf3800 only) import argparse import smbus