реклама на сайте
подробности

 
 
> Отзовитесь кто работал с ЦАП TLV5638
Dark Simpson
сообщение Oct 6 2010, 01:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-10-10
Пользователь №: 59 954



Доброй ночи.
Честно говоря, не знаю в тот ли раздел написал (по ЦАП конкретного раздела не нашел)...
В общем, нужен человек, руками щупавший сабжевый ЦАП. У меня с ним какие-то большие и очень странные непонятки...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dark Simpson
сообщение Oct 7 2010, 21:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-10-10
Пользователь №: 59 954



Swordfish Basic
Штатные модули работы с SPI под сомнение не ставим, ибо а) пробовал не использовать модули и делать на асме (с аюсолютно тем же результатом) и б) два других компонента на плате — ОЗУ и SD-карта отлично работают. И вообще все всегда работало. Проблема только с этим ЦАП.

Код
Program Test
Device = 18F2550
Clock = 24
Config //8M crystal
  PLLDIV = 2, //4M for PLL
  USBDIV = 2, //48M use PLL/2
  CPUDIV = OSC3_PLL4, //For PLL - 24M
  FOSC = HSPLL_HS, //HS with PLL
  VREGEN = ON,
  MCLRE = OFF,
  PWRT = ON,
  BOR = OFF, //!!!
  BORV = 2, //!!!
  WDT = OFF,
  WDTPS = 32 //128 msec
  
//#option WDT = false
  
Const ipLow = 1
Const ipHigh = 2

#option SPI_SCK = PORTB.1
#option SPI_SDI = PORTB.0
#option SPI_SDO = PORTC.7

Include "System"
Include "Utils"
Include "SPI"

Dim ACT_LED As PORTB.5

Dim ADC_nCS As PORTC.2

//////////////////////////////////////////////////////////

Sub InitHW()
  //Set all ports to digital operation
  SetAllDigital()
  //Set port pins direction
  Output(ACT_LED)
  Output(ADC_nCS)
  //Deselect chip
  ADC_nCS = 1
End Sub

Sub InitSPI()
  SPI.SetAsMaster(spiOscDiv16) //24M/16=1.5Mbps
  SPI.SetSample(spiSampleMiddle) //Default
End Sub

///////////////

Sub ADC_SetSPImode()
  SPI.Enabled = false
  SPI.SetClock(spiIdleLow, spiFallingEdge) //SPI mode 1
  SPI.Enabled = true
End Sub

Sub ADC_Write(Data As Word)
  ADC_nCS = 0
  SPI.WriteByte(Data.Byte1)
  SPI.WriteByte(Data.Byte0)
  ADC_nCS = 1
End Sub

Sub ADC_Init()
  //Set 1.024 volts reference and Fast mode
  ADC_Write(%1001000000000001)
End Sub

Sub ADC_OutAB(A As Word, B As Word)
  Dim Temp As Word
  //
  //Write B to Buffer
  Temp = (B And $0FFF) Or %0001000000000000
  ADC_Write(Temp)
  //Out A as A and Buffer as B
  Temp = (A And $0FFF) Or %1000000000000000
  ADC_Write(Temp)
End Sub

//***********************************************
//************ Start of program *****************
//***********************************************
InitHW
InitSPI
//
ACT_LED = 0
//
ADC_SetSPImode()
ADC_Init()
//Main loop
While True
  ADC_OutAB(4095, 4095)
  Delayms(100)
Wend

End


Я так подозреваю, что следующим пунктом будут попрошены осциллограммы?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 23:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.02971 секунд с 7
ELECTRONIX ©2004-2016