• 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






Re: PIC4520 與25LC160 溝通使用SPI
#2
版主
版主


查看用戶資訊
確定一下 SPI Mode 有正確設定嗎?
參考一下 Microchip 所提供的範例程式: AN1018

http://www.microchip.com/stellent/idc ... eId=1824&appnote=en025489

發表於: 2008/9/1 15:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


PIC4520 與25LC160 溝通使用SPI
#1
新會員
新會員


查看用戶資訊
小弟使用C18 用到SPI部分與25LC160 傳輸讀取資料
程式會卡在busy_polling();
就算去掉 讀到的值 也是錯誤
石英晶體是接16M
用的實驗版是APP001
請問是什麼原因呢!? 謝謝
以下是程式碼

#include <p18cxxx.h>
#include <spi.h>
// FUNCTION Prototypes
void set_wren(void);
void busy_polling(void);
void status_write(unsigned char data);
void byte_write(unsigned char addhigh,unsigned char addlow,unsigned char data);
unsigned char byte_read (unsigned char addhigh,unsigned char addlow);

unsigned char var;
unsigned char ff=0x00;

#define SPI_CS LATAbits.LATA5
//**************************************************
void main(void)
{
ADCON1=0X0F;
TRISA = 0;
SPI_CS = 1; // ensure SPI memory device
// Chip Select is reset
OpenSPI(SPI_FOSC_16, MODE_00, SMPEND);
set_wren();
status_write(0);
busy_polling();
set_wren();
byte_write(0x00, 0x61, 'E');
busy_polling();
ff = byte_read(0x00, 0x61);
CloseSPI();
while(1);
}
void set_wren(void)
{
SPI_CS = 0; //assert chip select
var = putcSPI(SPI_WREN); //send write enable command
SPI_CS = 1; //negate chip select
}
void byte_write (unsigned char addhigh,unsigned char addlow,unsigned char data)
{
SPI_CS = 0; //assert chip select
var = putcSPI(SPI_WRITE); //send write command
var = putcSPI(addhigh); //send high byte of address
var = putcSPI(addlow); //send low byte of address
var = putcSPI(data); //send data byte
SPI_CS = 1; //negate chip select
}
unsigned char byte_read (unsigned char addhigh,unsigned char addlow)
{
SPI_CS = 0; //assert chip select
var = putcSPI(SPI_READ); //send read command
var = putcSPI(addhigh); //send high byte of address
var = putcSPI(addlow); //send low byte of address
var = getcSPI(); //read single byte
SPI_CS = 1;
return (var);
}
void status_write (unsigned char data)
{
SPI_CS = 0;
var = putcSPI(SPI_WRSR); //write status command
var = putcSPI(data); //status byte to write
SPI_CS = 1; //negate chip select
}
void busy_polling (void)
{
do
{
SPI_CS = 0; //assert chip select
var = putcSPI(SPI_RDSR); //send read status command
var = getcSPI(); //read data byte
SPI_CS = 1; //negate chip select
} while (var & 0x01); //stay in loop until !busy
}

發表於: 2008/8/30 21:14
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... ]

教育訓練中心

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