From 3047d8f321af7131f6afbbb4d97bb918f6185074 Mon Sep 17 00:00:00 2001 From: sago35 Date: Thu, 21 Jul 2022 16:41:00 +0900 Subject: [PATCH] samd51: improve TRNG --- src/machine/machine_atsamd51.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index 6adab95f..54bd1fc9 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -2067,18 +2067,16 @@ func (dac DAC) syncDAC() { } } -var rngInitDone = false - // GetRNG returns 32 bits of cryptographically secure random data func GetRNG() (uint32, error) { - if !rngInitDone { + if !sam.MCLK.APBCMASK.HasBits(sam.MCLK_APBCMASK_TRNG_) { // Turn on clock for TRNG sam.MCLK.APBCMASK.SetBits(sam.MCLK_APBCMASK_TRNG_) // enable sam.TRNG.CTRLA.Set(sam.TRNG_CTRLA_ENABLE) - - rngInitDone = true + } + for !sam.TRNG.INTFLAG.HasBits(sam.TRNG_INTFLAG_DATARDY) { } ret := sam.TRNG.DATA.Get() return ret, nil