⑴ 那位大俠能給解釋一下飛思卡爾單片機中的 SCI,不勝感激
就是串口通信模塊
包括幾個寄存器:波特率寄存器:SCIxBDH\SCIxBDL
控制寄存器1:SCIxC1
控制寄存器2:SCIxC2
控制寄存器3:SCIxC3
通信狀態寄存器1:SCIxS1
通信狀態寄存器2:SCIxS2
通信數據寄存器:SCIxD
其中x都代表序號,串口通信模塊1,串口通信模塊2
按照Datasheet把這幾個寄存器設置一下就可以了
⑵ 飛思卡爾單片機 SCI 通信
下位機怎麼算是死掉了?是程序跑飛了亂操作還是不執行了?
不執行的話是不是你的程序里有指令一直等著串口數據,如果串口數據沒有來,它就死等呢?
不貼程序出來誰知道你是什麼問題?
⑶ 單片機SCI的作用
你用的飛思卡爾的MCU吧,他的MCU串口叫SCI,呵呵, LIN匯流排在汽車電子這塊用的很多,一般用於低速ECU模塊設計,車身控制器BCM,像什麼雨刷控制,電動車門控制啦,用的比較多。。。
⑷ 飛思卡爾16位單片機SCI串列通信里, While(!(SCI0SR1&0X80));這行什麼作用啊下面是寫輸出寄存器的一個子
SCI0SR1的最高位為TDRE,為發送數據寄存器空標志位。當發送數據寄存器中的數據轉移到了移位寄存器中時,該標志位置1,此時發送數據寄存器為空,可以接收新的數據。
While(!(SCI0SR1&0X80))即為判斷SCI0SR1的最高位即TDRE位是否為1,如果為1則退出循環往數據寄存器寫要發送的數據(後兩行的意思)
希望對你有幫助。
⑸ 飛思卡爾mc9s12xs128單片機SCI有兩組,我知道怎麼選用SCI0,但是不知道怎麼選用SCI1。SCI1有3組,求大神指
樓主有飛思卡爾編程軟體嗎?我這win7 64位不兼容啊~~~太淘氣了,話說我也在用mc9s12xs256 不過我剛接觸 估計幫不到樓主。。。我不敢問導師啊~~這要知道我玩知道弄shi我了。。
⑹ 飛思卡爾mc9s12xs128單片機SCI有兩組,怎麼選用呢
void SCI_Init(void)
{
SCI0BDH = 0X00; //Baud rate = 9600
SCI0BDL = 0X9C;
SCI0CR1 = 0X00;
SCI0CR2 = 0X2C; //啟用接受中斷 發送使能 接受使能
}
/**********************************************
*** SCI send data function ***
**********************************************/
void SCI_Send_Data(byte data)
{
while (!(SCI0SR1&0X80)){;} //wait TDRE置1,即等待發送
SCI0DRH = 0; //9-bit data format
SCI0DRL = data; //send data
}
/*================中斷========================*/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 20 SCI_Rx(void)
{
SCI0SR1_RDRF = 1;
//SCI0_Rx_Data = SCI0DRL;
}
SCI1類似,具體寄存器查看頭文件或者數據手冊吧!
⑺ 飛思卡爾08 SCI發送數據時,為什麼要弄一個字元串發送函數、
串口發送函數SCI_send,只發送1個位元組,判斷的是緩沖器是否空。
而send_string發送字元串,串中每個字元要調用一次SCI_send,並且需要判斷字元串是否發送完畢。
這兩個函數命名極其不規范,其一風格不統一,其二函數名沒有明確函數功能及不同函數之間的區別。
此外,send_string中判斷是否為0,也不太妥,單片機處理串口,有很多時候需要發送0x00這類數據,不適合用高級語言的字元串以0x00結尾這樣的規則,最好以發送位元組數作為發送完成依據。
⑻ 飛思卡爾單片機SCI串口通信 如何設置兩個MCU之間通信的主從關系,不設置是否能通信
飛思卡爾單片機SCI是個全雙工非同步通訊介面,不設置主從也可以通訊,但一般用在點對點通訊;在多機系統中,考慮通訊的可靠、准確,在線路上只有發送時只有一個單片機發送,不會在匯流排上發生混亂,所以要定義主、從關系;一般起始發送指令的單片機,為主;其它為輔。根據你系統中的上下關系也可以定義。主發指令向從機執行,或者要求從機發送數據回,協議根據系統要求設置。
⑼ 飛思卡爾單片機SCI編程求救!!!
void SendMsg(unsigned char msg[])
函數定義的這一行,msg[]的「[]」去掉
這個錯誤我相信是你的筆誤
函數的參數不能是數組的,只能是數組的首地址
而且,你這個明顯只是想傳遞數組中的一個元素過去,也就是說,傳遞到SendMsg函數中的,只是一個unsigned char型變數而已,寫個中括弧做什麼
⑽ 飛思卡爾MC9S12NE64VTU單片機串口SCI1串口收發問題
看了你的程序,有兩個問題:
1. 你的中斷程序裡面有個PTG=0x40和0x00是做什麼用的,從你的注釋來看,是不是用來設置傳輸和接收狀態轉換的(這個有點奇怪)?
你的中斷程序應該是接收數據後產生中斷,然後將相同的數值發出去。這里我假設發送、接收通過PTG控制,這里我假設PTG=0就會disable發送,SCI1DRL=data;可以看作啟動發送,可是還沒有發送完PTG=0就會disable發送了。
可以在PTG=0前面再加判斷TC看看是否發送已經完成。(這個是基於PTG控制收發的基礎得到的結論,希望對你有幫助)
2. 你的斷點設置在哪裡,收發成功?如果在PTG=0x00還沒有執行之嗎?