• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






關於dsPIC30F4011與MCP4921做SPI傳輸的問題
#1
新會員
新會員


查看用戶資訊
各位大大您好,小弟想從dsPIC傳輸數值給MCP4921(8腳位)做DAC,並在示波器顯示轉換後的電壓值。我電路接法是dsPIC的RB3、RB4、SDO1(25腳)、SCK1(24腳)分別接上MCP4921的CS、LDAC、SDI、SCK。MCP4921的Vref為5V、AVss與dsPIC共地。小弟查過DATASHEET知道此DAC有12bit解析度,而高4位元為設定位元,且支援20MHz的時脈。 問題是小弟總是無法量測到SCK的波形(我是用Active Low的模式) ,而Vout也沒有任何輸出,不知是哪裡出了問題,希望各位先進能幫忙解決小弟的疑惑,不勝感激!
以下為程式碼:
------------------------------------------------------------------------#include <p30f4011.h>
#include <spi.h>

/*-----------------設定configure bits--------------*/ _FOSC(CSW_FSCM_OFF & XT_PLL16); _FWDT(WDT_OFF); _FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN); _FGS(CODE_PROT_OFF); _FICD( ICS_PGD1 );

//系統時脈為7372800*16/4

/*--------------------定義腳位----------------------*/
#define SPI_CS PORTBbits.RB3
#define DIR_SPI_CS TRISBbits.TRISB3
#define MODE_SPI_CS ADPCFGbits.PCFG3
#define SPI_LDAC PORTBbits.RB4
#define DIR_SPI_LDAC TRISBbits.TRISB4
#define MODE_SPI_LDAC ADPCFGbits.PCFG4

/*---------------------宣告變數----------------------*/
int Loop;
unsigned int SPI_Data;

/*---------------------宣告函式----------------------*/
void Init_Port(void);
void SPI_Init(void);
void SPI_MCP4921_Write(void);

/*---------------------主程式開始-------------------*/
void main(void)
{
Init_Port(); //設定輸出入腳位
SPI_Init(); //設定SPI模組
SPI_MCP4921_Write();
}

/*---------------------定義函式----------------------*/
void Init_Port(void)
{
SPI_CS = 1; //RB3為數位腳
DIR_SPI_CS = 0; //RB4為輸出腳
MODE_SPI_CS = 1; //PORTB4值為H(關閉SPI模組)

SPI_LDAC = 1; //RB4為數位腳
DIR_SPI_LDAC = 0; //RB4為輸出腳
MODE_SPI_LDAC = 1; //PORTB4值為H(關閉DAC)
}

void SPI_Init(void)
{
unsigned int SPICONValue;
unsigned int SPISTATValue;
/* Configure SPI1 interrupt */
ConfigIntSPI1(SPI_INT_DIS & SPI_INT_PRI_6);
/* Configure SPI1 module to transmit 16 bit timer1 value in master mode */
SPICONValue = FRAME_ENABLE_OFF & FRAME_SYNC_OUTPUT &
ENABLE_SDO_PIN & SPI_MODE16_ON &
SPI_SMP_OFF & SPI_CKE_ON&
SLAVE_ENABLE_OFF &
CLK_POL_ACTIVE_HIGH&
MASTER_ENABLE_ON&
SEC_PRESCAL_1_1 &
PRI_PRESCAL_4_1;

SPISTATValue = SPI_ENABLE & SPI_IDLE_STOP &
SPI_RX_OVFLOW_CLR;

OpenSPI1(SPICONValue,SPISTATValue );
}

void SPI_MCP4921_Write(void)
{
SPI_CS = 0;
SPI_Data = 0b0011111111111111;
WriteSPI1(SPI_Data);
while(SPI1STATbits.SPITBF);
SPI_CS = 1;
SPI_LDAC = 0;
for(Loop=0;Loop<5;Loop++);
SPI_LDAC = 1;
}

發表於: 2009/11/20 11:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------