본문 바로가기

개발/embed

Nuvoton M483 i2c + TLC59116 (Led Drv) IRQ MultyByte RW방식, sample source

반응형

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로 만들어 주삼

m483_TLC59116-HDC1080-230802.zip
0.88MB
tlc59116.zip
3.32MB

 

7. 누보톤 관련 리소스는

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

에 있읍니다

 

8. 참고로  

Version.h 에서

#define _USE_HDC1080     0
#define _USE_TLC59116    1

로 되어 있는거

#define _USE_HDC1080     1
#define _USE_TLC59116    0

로 바꾸면 HDC1080 이 테스트 됩니다

 

 

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

반응형