이전에 nuvoton에서 제공하는 i2c.c 를 이용 하였는데,
irq 를 이용 하는 방법 만들어 추가 함.
-- 즉 irq 이용 안하던 이전거과 irq 이용하는거 합본임.
- 혹시 irq 잘 모르겠으면 이전거 이용 하든 본 버전에서 irq 안쓰는거로 이용 하면 됨
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. 출력
6. 소스 올림.
죄송 하지만 세부 설명은 다음에... 혹시 기회가 온다면..
7. 누보톤 관련 리소스는
에 있읍니다
8. 보탬이 되셨음... 댓글 써주심. 힘이 됩니다... 고맙읍니다.
'개발 > embed' 카테고리의 다른 글
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 (온도 습도 센서) MultyByte RW방식 (0) | 2023.07.27 |
i2c (iic) 의 간단한 이해 (0) | 2023.07.25 |
[CubeIDE] stm32 Uart Printf, sample source (0) | 2023.07.14 |