nuvoton에서 제공하는 i2c.c 를 이용 하였는데,
irq 를 이용 하는 방법 만들어 추가 함.
-- 즉 irq 이용 안하던거과 irq 이용하는거 합본임.
뭐 사실 HDC1080 (온도 습도 센서) 도 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 포트는
i2c1 - pb1 pin6 scl , pb0 pin7 sda 을 이용 하였다
이에 따라 irq i2c 에서 i2c0 쪽 코드는 손대지 않았고,
i2c1 에 연결 하였기에 i2c1 code 만 변경 하였다. 혹시 i2c0 에 연결 한다면, i2c1 코드 보고 i2c0 를 변경하여야 합니다.
3. hdc1080 소스는 https://github.com/s54mtb/MS5637_HDC1080 에서 가져옴
stm 으로 되어 있어 나름 수정함.
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 콜백 함수 2개를 만듬
void I2C1_MasterRxCallBack()
void I2C1_MasterTxCallback()
뭐 대부분 가위질이지만, 뭘 잘라 어디에 붙여야 하는지는 한거 같음..
5. 출력 - 뭐 LED 켜지는 거 보면 알지만.. Uart 로 debug 나오는거는 아래와 같음
현재 상태는 0x60 ~ 0x6F 까지 뒤져 있는거 한번씩 켜주는 test code 로 되어 있음.
6. 소스, TLC59116 자 올림.
죄송 하지만 세부 설명은 다음에... 혹시 기회가 온다면..
그리고 TLC59116 /Reset 핀을 연결은 적당한 GPIO에 알아서 하시고, 부트 하면 0으로 만들었다고 1로 만들어 주삼
7. 누보톤 관련 리소스는
에 있읍니다
8. 참고로
Version.h 에서
#define _USE_HDC1080 0
#define _USE_TLC59116 1
로 되어 있는거
#define _USE_HDC1080 1
#define _USE_TLC59116 0
로 바꾸면 HDC1080 이 테스트 됩니다
* 보탬이 되셨음... 댓글 써주심. 힘이 됩니다... 고맙읍니다.
'개발 > embed' 카테고리의 다른 글
keil source size => 필요 메모리 크기 size (0) | 2023.11.27 |
---|---|
Nuvoton M483 i2c + RV3028 (RTC) IRQ , 고정밀 RTC 비교, sample source (0) | 2023.08.07 |
Nuvoton printf debug uart 변경 (0) | 2023.08.02 |
Nuvoton M483 i2c+hdc1080 (온도 습도 센서) IRQ MultyByte RW방식, sample source (0) | 2023.07.31 |
Nuvoton M483 i2c + hdc1080 (온도 습도 센서) MultyByte RW방식 (0) | 2023.07.27 |