Sunday, August 27, 2017

STM8S UART1 Receive not working after ADC Init

STM8S 에서 ADC를 사용하면 UART1 RX가 동작하지 안는 문제 해결.


ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_3,ADC1_PRESSEL_FCPU_D2,
              ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_ALL,DISABLE);
    
을 아래처럼 바꿔라.

ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_3,ADC1_PRESSEL_FCPU_D2,
              ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_CHANNEL3,DISABLE);
    




Wednesday, June 14, 2017

D-Class AMP 만드는중...

ti에서 나오는 LM5106 Half bridge 를 사용하여 D-Class amp를 만드는 중인데
문제는 자꾸만 FET가 망가진다.

100W 미만의 부하에서는 괜찮은데 150W 이상에서 1분 정도 연속 동작시 FET가 망가진다.

이유는 아직 알지 못하고 있다.


의심가는것은 LM5106이 앰프용이 아닌 이유로 그런것이 아닌가 하는 생각이 드는데

근데 half bridge fet driver는 그냥 PWM 신호를 받으면 그것에 따라서 FET를 드라이브 하는것이 전부 아닌가?

UCC2어쩌고 칩의 경우 메뉴얼에 D-class amp용이라고 적혀있지만
LM5106은 파워 서플라이용이라고는 써 있지만 앰프용이라고는 안써있다.

그런 이유로 그럴지도 모르겠다.

여하튼 지금 tas5630b 칩으로 변경하여 개발중.....


Tuesday, March 14, 2017

ClassNotFoundException: com.mysql.jdbc.Driver solution: Copy mysql jdbc jar file to jre/lib/ext

ClassNotFoundException: com.mysql.jdbc.Driver


java.exe -cp mysql-connector-java-5.0.8-bin.jar 식으로 jdbc jar 파일을 알려줘도 ClassNotFoundException이 나면


mysql-connector-java-5.0.8-bin.jar 파일을 jre의 lib/ext 폴더에 넣으면 된다.



Wednesday, March 8, 2017

TAS5508C - VS1053B 사이의 I2S 연결 실패. TAS5508C - STA013 는 성공


사진은 테스트 중인 보드. 회로를 대충 만들어 점퍼선이 많음.




VS1053B와 STA013은 비슷하면서도 VS1053B가 기능이 많다. WMA 파일, WAV파일도 출력 가능하다.
그래서 기존에 사용하던 STA013을  VS1053B로 교체하고자 테스트하였다.

TAS5508C는 TI의 8ch PWM processor 이고 I2S 오디오를 입력받아 PWM을 출력한다.
중간에 EQ, auto mute 같은 오디오 처리도 한다.

문제는 VS1053B의 I2S 출력을 TAS5508C가 받아들이지 않는다는것이다.
원인은 모르겠고, 분명 TAS5508C의 I2S 입력 규격에 VS1053B의 출력과 같은 형식이 있음에도 불구하고 안된다.

그래서  STA013을 계속 사용하기로 했음. 이것때문에 이틀동안 삽질함.

VS1053B 의 I2S 출력은 16bit 만 지원한다.

아무래도 TAS5508C가 16bit 입력 받는데 문제가 있는듯.

STA013은 32bit 출력.

-----------------------------------------------------------------------------------------

TAS5508C cannot recognize 16bit i2s signal from VS1053B.
Chip represent  PLL phase lock error, PLL auto lock,SCLK error, and not working.

I tried every thing for that, cannot find right way.

so. I use STA013, and success at first time.

The problem must be 16bit I2S signal from VS1053B that's not acceptable to TAS5508C.


Friday, March 3, 2017

VS1053 을 이용한 mp3 play 시에 음이 빨리 재생되면서 찌직 거리는 경우. too fast play mp3 noise error sound

VS1053에게 mp3 파일 데이터를 보내는 함수가 다음과 같을경우

void VS1053_sdi_write(VS1053_InitTypeDef* vs1053,uint8_t* txbuff,uint16_t datasize)
{
if(vs1053->initialised)
{
while( HAL_GPIO_ReadPin(vs1053->DREQport,vs1053->DREQpin) == 0); //Wait while DREQ is low

SDI_DSEL();
SCI_DSEL();

SDI_SEL();

HAL_SPI_Transmit(vs1053->hspi,txbuff,datasize,vs1053->timeout);

SDI_DSEL();

}
}

위 함수는 datasize만큼 보내기 전에 vs1053의 fifo에 여유가 있는지 물어본 후 데이터를 보낸다.
문제는 datasize가 32byte ( vs1053이 최소한으로 가지고 있는 fifo의 여유 공간)을 넘는 경우
32바이트를 넘는 모든 정보는 사라진다.


따라서 아래처럼 32byte 단위로 보내야 한다.

아주 단순한 코딩 실수이지만 한참을 삽질했다.


void PlayMp3()
{
uint32_t wbytes; /* File write counts */
uint8_t read_buffer[32*100];

if(f_mount(&mynewdiskFatFs, (TCHAR const*)SD_Path, 1) == FR_OK)
{
//SDMMC_Format();

if(f_open(&MyFile, "test.mp3", FA_READ) == FR_OK)
{
uint32_t fetch =0; 

while(1)
{
f_read(&MyFile, read_buffer, 1024,&fetch);
HAL_Delay(1);

if(fetch >0)
{
for(int p = 0; p < fetch / 32; p++)
VS1053_sdi_write(&vs1053, &read_buffer[p*32], 32);
}
else
{
f_close(&MyFile);
break;
}
}
}
}

}


------------------------------
in send mp3 data to vs1053, check DREQ signal each 32 bytes frame.
DREQ is high when vs1053 has fifo spaces at least 32 bytes.
If you send over 32bytes, overflow data.

Friday, February 3, 2017

TDA8932 모듈 노이즈 제거 (Reduce noise of TDA8932 D-Class amp Module)

사무실의 30W급 북쉘브 스피커의 앰프가 살짝 고장나서 스피커, 엔클로져는 그대로 사용하고 내부의 앰프만 교체하려고 TDA8932 모듈을 2개 사서 교체하였다.

(http://www.devicemart.co.kr/1326900)

달고 소리를 들어보니 심각할 정도의 삐~~~ 하는 잡음이 나왔다. 전원관련된 문제는 아니었고 오실로스코프로 출력을 봤더니 modulation 파형도 1v 수준으로 나왔고 그 외에도 귀에 들리는 노이즈가 심각했다.

구입한 모듈은 8옴에 맞춰서 출력단이 구성되어있고 내 스피커는 6옴이기에 불일치하는것도 있지만 그래도 좀 심하다 싶어 메뉴얼을 살펴본 결과 그냥 모듈레이션 주파수를 올리면 들리던 잡음이 귀에 들리지 않는 영역으로 밀려 올라갈것으로 보고 fOSC를 정하는 저항을 바꿨다.
33k에서 27k로 변경.
출력단의 저주파필터용 캐패시터도 아마 680nF 정도일것인데 1uF으로 교체.
물론 고음이 좀 깍일 수는 있지만 그래도 노이즈를 듣는것보다는 낫다.

변경하고 들어보니 노이즈는 스피커에 귀를 대고 듣지 않는 이상 들리지 않는다.




----------------------------

To reduce continuous high frequency noise(beep~~~~~~~), Change resistor for modulation frequency and change LPF capacitor to 1uF.