找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2800|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一個(gè)關(guān)于spi驅(qū)動(dòng)外設(shè)的問(wèn)題。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76986 發(fā)表于 2015-4-14 23:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我現(xiàn)在要用51單片機(jī)驅(qū)動(dòng)一個(gè)adc(adc5310),要把cs拉低,clk發(fā)送時(shí)鐘,data發(fā)生數(shù)據(jù),數(shù)據(jù)在clk的上升沿取樣(原本是下降沿,現(xiàn)在在adc的clk前加了一個(gè)反相器),一共要發(fā)送16位數(shù)據(jù),現(xiàn)在用I/O來(lái)模擬不行,用spi模塊也不行,為什么?下面是我寫的兩個(gè)驅(qū)動(dòng)函數(shù),有人能看出問(wèn)題出在哪里嗎?
void writead5310()
{
signed char i;
   cs=1;
   sclk=0
Delay2us()
cs=0;
for(i=15;i>=1;i--)
{
switch(i)
{
case 1:Delay2us();sclk=0;din=0;Delay2us();sclk=1;Delay2us();sclk=0;din=0;Delay2us();sclk=1;break;
case 2:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 3:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 4:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 5:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 6:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 7:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 8:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 9:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 10:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 11:Delay2us();sclk=0;din=1;Delay2us();sclk=1;break;
case 12:Delay2us();sclk=0;din=0;Delay2us();sclk=1;break;
case 13:Delay2us();sclk=0;din=0;Delay2us();sclk=1;break;
case 14:Delay2us();sclk=0;din=0;Delay2us();sclk=1;break;
case 15:din=0;Delay2us();sclk=1;break;
}
}
cs=1;
sclk=0;
}
  void SPI_SendByte(unsigned int dt)//網(wǎng)卡工作在SPI協(xié)議的從模式0:數(shù)據(jù)在時(shí)鐘的上升沿鎖定,下降沿輸出
{
unsigned char y;
   cs=1;
   sclk=0;
Delay2us();
cs=0;
for(y=16;y>0;y--)
{
  if(dt&0x8000)
  {
   
      din=1;

  }
  else
  {
   
      din=0;

  }
  sclk=1;
  dt <<= 1;
  sclk=0;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表