본문 바로가기

개발/embed

Nuvoton M483 i2c+hdc1080 (온도 습도 센서) IRQ MultyByte RW방식, sample source

반응형

이전에 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 함수를 이용 한다.

CPU Nuvoton M483   I2C1 과  HDC1080  I2C 연결

 

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. 소스 올림.

     죄송 하지만 세부 설명은 다음에... 혹시 기회가 온다면..

   

m483_hdc1080-IRQ-230731.zip
0.88MB
hdc1080-TempHumi.pdf
1.20MB
MS5637_HDC1080-master.zip
0.29MB

7. 누보톤 관련 리소스는

https://www.nuvoton.com.cn/products/microcontrollers/arm-cortex-m4-mcus/m483-can-series/m483sgcae2a/?group=Software&tab=2

에 있읍니다

 

8. 보탬이 되셨음... 댓글 써주심.  힘이 됩니다... 고맙읍니다.

반응형