LM3S8962 ADC 테스트

[TI]/LM3S8962 | 2011.11.14 15:15
Posted by nexp

LM3S8962 ADC 테스트


Sample rate of 500 thousand samples/second

Converter uses an internal 3-V reference



LM3S8962 ADC블록도





LM3S8962 ADC초기화 함수

//ADC Initialize

void AdcInit(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);      //ADC enable   


//ADCProcessorTrigger()에서 ADC 시작. 프로세서 트리거가 일어날때 작동한다.   

ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);   

//ADC0의 sequence를 구성한다.sequence number 0인 ADC를 single ended mode로 setting   

ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH0);   

//ADC를 사용 가능하게 해준다.   

ADCSequenceEnable(ADC_BASE, 0);  

}



LM3S8962 ADC Read 함수

//Read ADC Value

unsigned int AdcRead(unsigned char port)

{

unsigned long cnt;

unsigned long adc_result = 0;

ADCProcessorTrigger(ADC_BASE, 0);   


//sample sequence 가 완료될때 까지 대기한다.   

while(!ADCIntStatus(ADC_BASE, 0, false)){}  

ADCSequenceDataGet(ADC_BASE, port, &adc_result);


return adc_result;

}





LM3S8962 ADC Test 예제 소스코드


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

int main(void)

{

    unsigned long adc_result;

//시스템 초기화

SystemInit();

//LED포트 초기화

Led1Init();

Led1On();


DebugInit(BAUD_115200);

DebugPrint("LM3S8962 EVM ADC Test Program.\r\n");

//ADC 초기화

AdcInit();

while(1)

{

adc_result = AdcRead(0);

                DebugPrint("%ld\r\n", adc_result);

Delay(100);

}

}

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









LM3S8962 Internal Temperature Sensor

SENSO = 2.7 - ((T + 55) / 75)

[LM3S8962 EVM] 이더넷 포팅 하기 정리

먼저 lwip스택을 사용하기 위해 TI에서 제공하는 third_party, utils 폴더를 drv폴더에 복사 한다.


util/lwiplib.c 를 프로젝트에 삽입한다.
컴파일 하면 아래 링크가 없다고 나온다.
#include "lwip/opt.h"

패스 설정에서 아래와 같이 잡아 주면 된다.
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\src\include\

또 아래 링크도 없다고 나오는데...
#include "lwipopts.h"

TI예제 폴더에 보면 정의되어 있으므로 현재 프로젝트 루트로 복사 한다.

이후 아래 링크 에러가 발생하며 각각 패스를 잡아 주면 된다.
#include "arch/cc.h"
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\ports\stellaris\include\

#include "lwip/ip.h"
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\src\include\ipv4

결론적으로 아래 패스를 잡아 주면 된다.
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\src\include\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\ports\stellaris\include\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.2\src\include\ipv4


\01_drv\driverlib\rom_map.h
파일을 최신으로 업데이트 해야 에러가 발생하지 않는다.


startup_ewarm.c

    lwIPEthernetIntHandler,                      // Ethernet





[LM3S8962 EVM] 웹서버 테스트

[TI]/LM3S8962 | 2010.05.23 19:54
Posted by nexp
[LM3S8962 EVM] 웹서버 테스트



LM3S8962는 Cortex-M3코어에 Ehternet MAC + Phy가 포함되어 있는 MCU로 상당히 간단하게 임베디드 이더넷을 구현할 수 있다.
무료 TCP/IP protocol stack 인 lwIP를 이용해서 임베디드 웹서버 테스트를 진행 했다.
간단한 스텍임에도 속도 빠르고 여러가 다양한 프로토콜을 지원하고 있다.

먼저 luminary micro에서 포팅해서 third party로 제공하는  lwip-1.3.0폴더를 복사하고 패스를 잡아 준다.

$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\src\include\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\src\include\ipv4\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\apps\httpserver_raw
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\ports\stellaris\include




웹페이지를 제작하고 롬파일 시스템을 제작하면 된다. 롬파일 시스템은 여러 툴이 있지만 makefsfile를 이용하면 쉽게 제작 할 수 있다.



LM3S8962 WebServer 테스트 동영상




예제 소스코드
LM3S8962 이더넷 관련 초기화

    // LM3S8962 이더넷 Controller 초기화 및 리셋
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
    SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

    // Ethernet LED 초기화
    //  LED0        Bit 3   Output
    //  LED1        Bit 2   Output

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_HW);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3,  GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);


    // Enable processor interrupts.
    IntMasterEnable();


MAC어드레스는 임의로 할당했다. lwIPInit() 함수로 설정 가능하다. IP는 IP공유기를 이용하므로 DHCP에서 자동으로 할당받도록 했다. 예전의 DHCP프로토콜은 공유기에 따라 고려해야 할 사항이 많았었는데... 요즘에는 상다히 간단히 처리 가능하다.

    pMACArray[0] = 1;
    pMACArray[1] = 2;
    pMACArray[2] = 3;
    pMACArray[3] = 4;
    pMACArray[4] = 5;
    pMACArray[5] = 6;
 
   
    // MAC초기화 및 DHCP 사용 설정
    lwIPInit(pucMACArray, 0, 0, 0, IPADDR_USE_DHCP); 


LM3S8962 웹서버 초기화

    // Initialize a sample httpd server.
    httpd_init();

    // Pass our tag information to the HTTP server.
    http_set_ssi_handler(SSIHandler, g_pcConfigSSITags,  NUM_CONFIG_SSI_TAGS);

    // Pass our CGI handlers to the HTTP server.
    http_set_cgi_handlers(g_psConfigCGIURIs, NUM_CONFIG_CGI_URIS);

    // Initialize IO controls
    io_init();


main 소스코드

/*
 - LM3S8962 Webserver Test
*/

#include "system.h"
#include "serial.h"
#include "ether_io.h"

int main()
{
 SystemInit(); 

 Led1Init();
 Led1Off();
 
 Led2Init();
 Led2Off(); 

 //Serial Init
 DebugInit(BAUD_115200);
 DebugPrint("LM3S8962 Ethernet Test Program.\r\n");

 EtherNetInit();
 
 DebugPrint("Ethernet I/O Init\r\n");
 
 while(1)
 {
  
  ProcessWebServer();
 }
}

[LM3S8962 EVM] COM26T2844 TFT LCD 테스트



[LCD-EXP EVM]
보드를 이용하여 COM26T2844 TFT LCD테스트 진행을 했다. LM3S8962는 MAC, Phy가 포함되어 있으므로 추후 이더넷을 이용하여 TFT LCD제어에 사용할 예정이다.

LCD-EXP보드의 핀맵



LM3S8962 보드 핀맵



핀맵 정의
//LM3S8962 EVM TFT LCD Pin Map defination
#define LCD_EN_BIT      BIT1
#define LCD_EN_PORT      PORTG
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT6
#define LCD_RST_PORT     PORTC
#define LCD_RST_ON()     Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF()     Cbi(LCD_RST_PORT, LCD_RST_BIT)

#define LCD_RS_BIT      BIT7
#define LCD_RS_PORT      PORTC
#define LCD_RS_OFF()     Cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(LCD_RS_PORT, LCD_RS_BIT)

define LCD_WR_BIT      BIT7
#define LCD_WR_PORT      PORTA
#define LCD_WR_OFF()     Cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON()      Sbi(LCD_WR_PORT, LCD_WR_BIT)

#define LCD_RD_BIT      //BIT6
#define LCD_RD_PORT      //PORTA
#define LCD_RD_OFF()     //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON()      //Sbi(LCD_RD_PORT, LCD_RD_BIT)

#define LCD_BL_BIT      BIT0
#define LCD_BL_PORT      PORTF
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)


LM3S8962 TFT LCD(COM26T2844 ) 테스트 동영상


[LM3S8962 EVM] 보드제작 - LM3S8962 관련 자료


Luminary Micro Cortex-M3 LM3S8962 EVM 보드를 제작 했다. [M-Type EVM] 표준으로 제작해 기존 보드와 호환이 되도록 했다.
LM3S8962는 50Mhz Cortex-M3 코어에 Ethernet MAC, Phy를 포함하고 256k Flash, 64k Ram으로 이더넷 제어용으로 상당히 편리하다.






LM3S8962 확장 테스트 보드





LM3S8962 테스트 동영상



LM3S8962 TFT LCD테스트



LM3S8962 회로도




on board LED - PE0/PWM4, PE1/PWM5


on Board Swtich - PG0, UART




[iRadio-8962] LM3S8962 인터넷 라디오 모듈 제작



LM3S8962 를 이용하여 인터넷 라디오 모듈을 제작 했다. LM3S8962의 기본적인 테스트를 해 볼 수 있도록 범용성을 두면서 각종 모듈을을 연결하면 인터넷 라디오로도 사용할 수 있도록 제작해 보았다.



VS1033 MP3모듈을 연결하여 MP3출력, SD카드 테스트를 해 볼 수 있다.



LCD를 두어 이더넷 웹서버나 웹기반제어에서 디버깅 용도로 가능하다.



FTF LCD를 연결하여 출력 가능하다









LM3S8962 JTAG커넥터

3.2" TFT LCD모듈 제작

[MODULE]/LCD_TFT | 2009.05.26 20:10
Posted by nexp
3.2" TFT LCD모듈 제작



Controller
Luminary Cortex-M3 LM3S8962 사용



LCD Driver


드라이버 데이터시트


초기화 코드 ()

void LCDInitialize(void)
{
 Delay(1);
 Reset();
 Delay(10);

 // byte-write synchronization
 LCD_CMD(0x00);                                         
 LCD_CMD(0x00);
 LCD_CMD(0x00);
 LCD_CMD(0x00);

 // calibration control setting
 LCD_CMD(0xA4); LCD_DAT(0x0001);         
 Delay(1);

 // display control setting
 LCD_CMD(0x01); LCD_DAT(0x0100);         
 LCD_CMD(0x02); LCD_DAT(0x0400);
 LCD_CMD(0x03); LCD_DAT(0x1030);
 LCD_CMD(0x08); LCD_DAT(0x0808);
 LCD_CMD(0x09); LCD_DAT(0x0004);
 LCD_CMD(0x50); LCD_DAT(0x0000);
 LCD_CMD(0x51); LCD_DAT(0x00EF);          // x = 0~239
 LCD_CMD(0x52); LCD_DAT(0x0000);
 LCD_CMD(0x53); LCD_DAT(0x013F);          // y = 0~319
 LCD_CMD(0x60); LCD_DAT(0x2700);
 LCD_CMD(0x61); LCD_DAT(0x0001);
 LCD_CMD(0x6A); LCD_DAT(0x0000);

 // gamma setting
 LCD_CMD(0x30); LCD_DAT(0x0703);
 LCD_CMD(0x31); LCD_DAT(0x0001);
 LCD_CMD(0x32); LCD_DAT(0x0104);
 LCD_CMD(0x33); LCD_DAT(0x0102);
 LCD_CMD(0x34); LCD_DAT(0x0300);
 LCD_CMD(0x35); LCD_DAT(0x0103);
 LCD_CMD(0x36); LCD_DAT(0x001F);
 LCD_CMD(0x37); LCD_DAT(0x0703);
 LCD_CMD(0x38); LCD_DAT(0x0001);
 LCD_CMD(0x39); LCD_DAT(0x0104);
 LCD_CMD(0x3A); LCD_DAT(0x0102);
 LCD_CMD(0x3B); LCD_DAT(0x0300);
 LCD_CMD(0x3C); LCD_DAT(0x0103);
 LCD_CMD(0x3D); LCD_DAT(0x001F);

 // power on sequence
 LCD_CMD(0x07); LCD_DAT(0x0001);         
 LCD_CMD(0x17); LCD_DAT(0x0001);
 LCD_CMD(0x19); LCD_DAT(0x0000);
 LCD_CMD(0x10); LCD_DAT(0x1390);
 LCD_CMD(0x11); LCD_DAT(0x0147);
 LCD_CMD(0x12); LCD_DAT(0x011C);
 LCD_CMD(0x13); LCD_DAT(0x3400);
 Delay_ms(10);
 LCD_CMD(0x12); LCD_DAT(0x013C);
 Delay_ms(10);

 // display on sequence   
 LCD_CMD(0x07); LCD_DAT(0x0021);         
 Delay_ms(10);
 LCD_CMD(0x10); LCD_DAT(0x1390);
 LCD_CMD(0x11); LCD_DAT(0x0147);
 LCD_CMD(0x07); LCD_DAT(0x0061);
 Delay_ms(10);
 LCD_CMD(0x07); LCD_DAT(0x0173);
}
















블로그 이미지

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)