Skip to content

Instantly share code, notes, and snippets.

@sanchox
Last active May 23, 2021
Embed
What would you like to do?
Bash script to program Silabs SI53xx devices via I2C bus using txt file exported from ClockBuilder tool
#!/bin/bash
I2CBUS="1"
I2CADDR="0x6a"
current_page="-1"
function set_page {
if [ "x$current_page" == "x$1" ]; then return; fi
echo "Setting current page to $1"
i2cset -y $I2CBUS $I2CADDR 0x1 "0x$1"
current_page=$1
}
if [[ $# -eq 0 ]];
then
exit;
fi
cmd_regex="0x([0-9a-zA-Z]{2})?([0-9a-zA-Z]{2}),0x([0-9a-zA-Z]{2})"
delay_regex="# Delay 300 msec"
while read line
do
if [[ $line =~ $delay_regex ]]; then
sleep 1;
fi
if [[ $line =~ $cmd_regex ]]; then
page=${BASH_REMATCH[1]}
addr=${BASH_REMATCH[2]}
data=${BASH_REMATCH[3]}
if [ "x$page" != "x" ]; then
set_page $page
fi
i2cset -y $I2CBUS $I2CADDR "0x$addr" "0x$data"
echo "$page $addr $data"
fi
done < $1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment