MPsoC Multi Channel Mipi Camera Interface Board 제작


- PCB : 4층 임피던스 보드

- 4Ch Mipi Camera

- MPSoC  Module Board


보드 SMT되서 나왔고 기본 전원 체크시 문제 없이 동작하는것 확인했다.






USB KeyBoard Encoder 보드 제작

[INTERFACE]/USB | 2018.03.22 02:04
Posted by nexp

USB KeyBoard Encoder 보드 제작


USB Keyboard 로 동작하는 Encoder 보드를 제작했다.

5개의 키 값과 Encoder값을 입력 받아 처리 할수 있는 보드로 MCU는 ST사의 STM32F042를 적용하여 제작하였다.

HID composite device 로 인식해서 Key값을 실시간으로 변경 가능하다.


USB KeyBoard Encoder 보드 구성도



Key값은 HID Key Config 프로그램으로 재 설정 가능하다. HID 장시치로 인식해서 동작중 실시간으로 설정 가능하다.

키값는 Function Key(CTRL, ALT, SHIFT), Normal Key 에디트 창에서 키값을 입력하면 간단히 설정 가능하다.


LTC2704 - Quad 12-, 14- and 16-Bit Voltage Output SoftSpan DACs 테스트




우선 SPI 2 정상 출력되는것만 확인.
/LDAC 핀을 흔들어 줘야 정상 출력이 나올것 같은데... 설명이 조금 에매하다...
테스트 해봐야 정확하게 알수 있을듯.

When the asynchronous load pin, LDAC, is taken low, all DACs are updated with code and span data (data in B1 buffers is copied into B2 buffers). CS/LD must be high during this operation. The use of LDAC is functionally identical to the “Update B1→B2” commands.













LTC2704 초기화 코드

void LTC2704_Init(void)

{

    LTC2704_CS_INIT();

    LTC2704_CS0_HI();

    LTC2704_CS1_HI();

    LTC2704_SPI_INIT();    

    

    LTC2704_CS0_LO(); 

    LTC2704_SPI_Send(0x2F);   //range

    LTC2704_SPI_Send(0x00);

    LTC2704_SPI_Send(0x01);   //+10V

    LTC2704_CS0_HI();  

}       






LTC2704 Data 출력 코드



void LTC2704_DataSet0(unsigned char Ch, unsigned short Data)

{

    unsigned char chanel[4] = {0, 2, 4, 6};    

    

    LTC2704_CS0_LO(); 

    LTC2704_SPI_Send(0x30+chanel[Ch]);

    LTC2704_SPI_Send(Data>>8);

    LTC2704_SPI_Send(Data);

    LTC2704_CS0_HI();

}


void LTC2704_DataOut0(unsigned char Ch)

{

    unsigned char chanel[4] = {0, 2, 4, 6};    

    

    LTC2704_CS0_LO(); 

    LTC2704_SPI_Send(0x40+chanel[Ch]);

    

    LTC2704_SPI_Send(0x00);

    LTC2704_SPI_Send(0x00);

    LTC2704_CS0_HI(); 

}


TAG DAC, LTC2704

Analog Devices 16Bit ADC AD7606 테스트

[MODULE]/AD/DA | 2018.02.25 07:07
Posted by nexp

Analog Devices 16Bit ADC AD7606 테스트



RESET 핀

Reset Input. When set to logic high, the rising edge of RESET resets the AD7606/AD7606-6/AD7606-4. The device should receive a RESET pulse directly after power-up. The RESET high pulse should typically be 50 ns wide. If a RESET pulse is applied during a conversion, the conversion is aborted. If a RESET pulse is applied during a read, the contents of the output registers reset to all zeros.






클럭 나오는것 까지 확인 

AD쪽에 +-15V가 필요하다



AD7606 핀맵 정의


//------------------------------------------------------------------------------

//ADC AD7606 Driver

#define AD7606_CS_HI()       (LATD |= BIT0)

#define AD7606_CS_LO()       (LATD &= ~BIT0)


#define AD7606_RST_HI()       (LATD |= BIT1)

#define AD7606_RST_LO()       (LATD &= ~BIT1)


#define AD7606_START_HI()       (LATD |= BIT2)

#define AD7606_START_LO()       (LATD &= ~BIT2)


#define AD7606_CS_INIT()     (TRISD &= ~BIT0)

#define AD7606_RST_INIT()    (TRISD &= ~BIT1)

#define AD7606_START_INIT()    (TRISD &= ~BIT2)

#define AD7606_SPI_INIT         SPI1_Init

//------------------------------------------------------------------------------





AD7606 Data Read 코드


void AD7606_ReadBuf(short *pBuff)

{

    AD7606_START_LO();

     Delay_Us(10);

     AD7606_START_HI();


     AD7606_CS_LO();

     pBuff[0] = SPI1_WriteReadByte(0);

     pBuff[0] |= SPI1_WriteReadByte(0)<<8;


     pBuff[1] = SPI1_WriteReadByte(0);

     pBuff[1] |= SPI1_WriteReadByte(0)<<8;


     pBuff[2] = SPI1_WriteReadByte(0);

     pBuff[2] |= SPI1_WriteReadByte(0)<<8;


     pBuff[3] = SPI1_WriteReadByte(0);

     pBuff[3] |= SPI1_WriteReadByte(0)<<8;

     

     //-----------------------------------------

     pBuff[4] = SPI1_WriteReadByte(0);

     pBuff[4] |= SPI1_WriteReadByte(0)<<8;


     pBuff[5] = SPI1_WriteReadByte(0);

     pBuff[5] |= SPI1_WriteReadByte(0)<<8;


     pBuff[6] = SPI1_WriteReadByte(0);

     pBuff[6] |= SPI1_WriteReadByte(0)<<8;


     pBuff[7] = SPI1_WriteReadByte(0);

     pBuff[7] |= SPI1_WriteReadByte(0)<<8;      

     AD7606_CS_HI();

}


TAG AD7606, ADC

ZCU102 보드에서 FMC커넥터의 MIPI 핀 할당 문제


멀티 채널 MIPI 카메라 제작중 MPSoC에서 MIPI 할당에서 문제가 발생




Bank64 - > DDR로 할당
Bank65 -> HPC1 2채널 할당 가능
Bank66 -> HPC0 1채널 할당 가능
Bank67 -> HPC0 1채널 할당 가능 (HPC0, 1 조합 할경우 1채널 추가 가능)

결론 ZCU102에서 HPC0, 1 채널을 동시에 사용할 경우 4채널 가능 (기구적 테스틑 불가능)
Tranz 보드를 사용할 경우 최대 64, 65, 66 Bank를 사용하면 5채널 까지 가능할  수도 있지만 확인 필요


따라서 ZCU102 보드에서는 테스트 할수 없음



블로그 이미지

nexp

카테고리

분류 전체보기 (1560)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (140)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (213)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (129)
[SENSOR] (41)
[DATA] (21)
[FPGA] (32)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)