먼저 고정밀 RTC 비교
1. RV3028 : 1 ppm
5000원/개
2. DS3231 : 5 PPM (1일 ±0.432초)
♦Accuracy ±2ppm from 0°C to +40°C
♦Accuracy ±3.5ppm from -40°C to +85°C
아두이노
15000원/개
3. DS1307 , DS1308
better than ±2 minute/month at 25°C
7500 원/개
4. PCF2131
accuracy ±3 ppm from -40 °C to +85 °C
5000원/개
1ppm
= 100만초에 1초 틀림
= 10일에 1초 도 안틀림
= 한달에 3초도 안틀림
= 1년 32초 틀림
-------------------
nuvoton에서 제공하는 i2c.c 를 이용 하였는데,
irq 를 이용 하는 방법 만들어 추가 함.
-- 즉 irq 이용 안하던거과 irq 이용하는거 합본임.
뭐 사실 HDC1080 (온도 습도 센서) 와 TLC59116(LED Driver) 도 I2c 로 이용 하는거 같이 들어 있음
1. Version.h 에서
#define _I2C_MODE 1 // 0: Use i2c.c. 1: Use IRQ, 2:Use MyI2c.c
라 되어 있는데 _I2C_MODE 를
1로 설정 하면, irq 를 사용 하여 multibyte rw 를 하는 code 를 넣었고,
0으로 하면, nuvoton 에서 제공하는 i2c.c 에 있는 multibyte rw 함수를 이용 한다.
2. i2c 포트는
i2c0과 i2c1 을 이용한 버전 2가지를 만들었다.
i2c0 - pb4, pb5 를 이용 하였고
i2c1 - pb1 pin6 scl , pb0 pin7 sda 을 이용 하였다
3. RV3028 리소느는
https://github.com/Kampi/RV-3028-C7 에서 가져옴.
4. nuvoton 제공 샘플 lib 코드에 i2c irq 핸들러가 제공 되는데 뭐 잘 모르겠고, 해서 i2c.c 에 있는
uint32_t I2C_WriteMultiBytes(I2C_T *i2c, uint8_t u8SlaveAddr, uint8_t data[], uint32_t u32wLen)
uint32_t I2C_ReadMultiBytes(I2C_T *i2c, uint8_t u8SlaveAddr, uint8_t rdata[], uint32_t u32rLen)
참고 하여 multibyte rw 가 되는 irq 콜백 함수 를 만듬
void I2C1_TxRxCallback()
뭐 대부분 가위질이지만, 뭘 잘라 어디에 붙여야 하는지는 한거 같음..
5. 출력
6. 소스 와 관련 자료 올림.
죄송 하지만 세부 설명은 다음에... 혹시 기회가 온다면..
i2c0 - pb4, pb5 를 이용 버전
i2c1 - pb1 pin6 pb0 pin7 이용 버전
7. 누보톤 관련 리소스는
에 있읍니다
8. 참고로
Version.h 에서
#define _USE_HDC1080 0
#define _USE_TLC59116 0
#define _USE_RV3028 1
로 되어 있는거
한개씩 1로 만들어 해보시면 다른거도 됩니다.
* 보탬이 되셨나요?... 댓글 써주심. 힘이 됩니다... 고맙읍니다.
'개발 > embed' 카테고리의 다른 글
FYDK- avr 오프라인 다운로더 (3) | 2023.12.08 |
---|---|
keil source size => 필요 메모리 크기 size (0) | 2023.11.27 |
Nuvoton M483 i2c + TLC59116 (Led Drv) IRQ MultyByte RW방식, sample source (0) | 2023.08.02 |
Nuvoton printf debug uart 변경 (0) | 2023.08.02 |
Nuvoton M483 i2c+hdc1080 (온도 습도 센서) IRQ MultyByte RW방식, sample source (0) | 2023.07.31 |