[問題] 使用MPLAB C18 for pic, SPI UART的問題
大家好,我的問題是需要知道如何設定與操作SPI和USART
背景:
公司臨危受命要我寫一個韌體,
我的背景是應用層的軟體,會點C語言,
但還沒寫過跟硬體連接的部分(連硬體概念都沒有),
後面如果有描述不正確的請指正。
我有看MPLAB對USART和SPI的範例,以及其他討論區的範例,
http://www.ermicro.com/blog/?p=1846
還有東拼西湊回來的知識...
架構:
PC-PIC(MCU)-設備(板子上的另一塊電路板)
要寫MCU裡面的韌體,也就是
PC-USART-SPI-設備
使用MPLAB ICD3 C18作工具
腳位:
USART部分:
RC6:TX
RC7:RX
SPI部分:
RC5:OUT
RC4:IN
RC3:CLK
RC2:EN ,對設備的話要設為high
我有把SPI的SI和CLK拉出到示波器(也不會看 = =),都是兩條橫線不會變化
在猜是不是我的設定設錯,再來是寫的函式用法對不對..煩請指教
以下是我的程式:
void main (void)
{
//設定UART和SPI的方向與in/out
TRISC = 0;
TRISCbits.RC4 = 1;
TRISCbits.RC7 = 1;
PORTC = 0;
PORTCbits.RC4 = 1;
PORTCbits.RC2 = 1;
SPI_Write(0x20, 0x26);//對設備的0x20寫入0x26
if(SPI_Read(0x20)==0x26) //若設備的0x20位置是0x26
LED_ON();//讓LED亮起來
//(單獨讓LED亮起來這個功能驗正可以動作了,但在這個if下不會)
//USART的部分還沒寫..前面SPI已經卡住了 >"<
}
以下是參考別人來的:
void SPI_Write(unsigned char addr,unsigned char data)
{
SSPBUF = addr;
// Wait for Data Transmit/Receipt complete
while(!SSPSTATbits.BF);
// Start Data transmission
SSPBUF = data;
// Wait for Data Transmit/Receipt complete
while(!SSPSTATbits.BF);
}
unsigned char SPI_Read(unsigned char addr)
{
SSPBUF = addr;
// Wait for Data Transmit/Receipt complete
while(!SSPSTATbits.BF);
// Send Dummy transmission for reading the data
SSPBUF = 0x00;
// Wait for Data Transmit/Receipt complete
while(!SSPSTATbits.BF);
return(SSPBUF);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.33.240
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章