i2csoft: add source code for each target

This commit is contained in:
sago35
2021-09-24 10:15:02 +09:00
committed by Ron Evans
parent 2c9a05a413
commit 4f82c231cb
6 changed files with 63 additions and 30 deletions
+5 -11
View File
@@ -4,20 +4,14 @@
package i2csoft package i2csoft
import ( import (
"device/arm" "device"
) )
// wait waits for half the time of the SCL operation interval. It is set to
// about 100 kHz.
func (i2c *I2C) wait() { func (i2c *I2C) wait() {
// atsamd51 wait := 20
// 1 : about 388kHz
// 17 : about 97kHz
wait := 1
if i2c.baudrate < 400*1e3 {
wait = 17
}
for i := 0; i < wait; i++ { for i := 0; i < wait; i++ {
arm.Asm(`nop`) device.Asm(`nop`)
} }
} }
+3 -9
View File
@@ -7,16 +7,10 @@ import (
"device" "device"
) )
// wait waits for half the time of the SCL operation interval. It is set to
// about 100 kHz.
func (i2c *I2C) wait() { func (i2c *I2C) wait() {
// atsamd51 wait := 60
// 10 : about 387kHz
// 56 : about 99kHz
wait := 10
if i2c.baudrate < 400*1e3 {
wait = 56
}
for i := 0; i < wait; i++ { for i := 0; i < wait; i++ {
device.Asm(`nop`) device.Asm(`nop`)
} }
+17
View File
@@ -0,0 +1,17 @@
//go:build nrf52840
// +build nrf52840
package i2csoft
import (
"device"
)
// wait waits for half the time of the SCL operation interval. It is set to
// about 100 kHz.
func (i2c *I2C) wait() {
wait := 26
for i := 0; i < wait; i++ {
device.Asm(`nop`)
}
}
+4 -10
View File
@@ -1,5 +1,5 @@
//go:build !esp32 && !atsamd51 && !atsame5x //go:build !esp32 && !atsamd51 && !atsame5x && !stm32f4 && !rp2040 && ! nrf52840
// +build !esp32,!atsamd51,!atsame5x // +build !esp32,!atsamd51,!atsame5x,!stm32f4,!rp2040,!nrf52840
package i2csoft package i2csoft
@@ -7,15 +7,9 @@ import (
"device" "device"
) )
// wait waits for half the time of the SCL operation interval.
func (i2c *I2C) wait() { func (i2c *I2C) wait() {
// atsamd21 @ 48MHz wait := 20
// 1 : about 360kHz
// 24 : about 96kHz
wait := 1
if i2c.baudrate < 400*1e3 {
wait = 19
}
for i := 0; i < wait; i++ { for i := 0; i < wait; i++ {
device.Asm(`nop`) device.Asm(`nop`)
} }
+17
View File
@@ -0,0 +1,17 @@
//go:build rp2040
// +build rp2040
package i2csoft
import (
"device"
)
// wait waits for half the time of the SCL operation interval. It is set to
// about 100 kHz.
func (i2c *I2C) wait() {
wait := 50
for i := 0; i < wait; i++ {
device.Asm(`nop`)
}
}
+17
View File
@@ -0,0 +1,17 @@
//go:build stm32f4
// +build stm32f4
package i2csoft
import (
"device"
)
// wait waits for half the time of the SCL operation interval. It is set to
// about 100 kHz.
func (i2c *I2C) wait() {
wait := 77
for i := 0; i < wait; i++ {
device.Asm(`nop`)
}
}