Re: 想請教各位大大關於 CAN BUS
|
||||
---|---|---|---|---|
新會員
|
另外,我想再請問一下
AN738 裡頭有另一個 function CANSetBaudRate 我看範例程式裡面都沒有用到這個 不知道她跟 CANInitialize 有什麼不同? 我看他裡面的變數都是一樣的? 再次謝謝各位
發表於: 2008/3/3 16:03
|
|||
|
Re: 想請教各位大大關於 CAN BUS
|
||||
---|---|---|---|---|
管理員
|
你好,
首先 , 你對於 Loopback & Normal 的觀念是對的 , 那就是 Normal mode 會真的把資料丟出去而 Loopback 只是內部的資料回路而已. 但是 , 因為 Loopback 處於特殊的測試模式 , 所以你的 Message ID = 0x002 , Filter = 0x002 , Mask = 0x7ff 的組合是收得到資料的. 因為此時 CAN 將以 0x002 ID 送出去而由 Loopback 回來的資料視為外部進入的資料而將其接收. 如果切換為 Normal Mode , 送出去的資料雖然在 CAN bus 上而且看起來應該也會進來(大家都應該看得到!) , 但是傳送端是會 Ignor 自己傳送的資料的 ( 只檢查而不接收 ). 如果要使用兩個 CAN node 在 Normal Mode 下面傳輸 , 應該將CAB 的 Filter 互設成對方的 ID 才可以的. 例如 : Node A : Message ID = 0x100 , Filter0 = 0x200 , Mask = 0x7ff Node B: Message ID = 0x200 , Filter0 = 0x100 , Mask = 0x7ff 如此 Node A 與 Node B 才能互通啦 :)
發表於: 2008/3/3 11:26
|
|||
|
想請教各位大大關於 CAN BUS
|
||||
---|---|---|---|---|
新會員
|
大家好
我最近開始完 PIC 的晶片 他的功能真的很強大 尤其是 CAN BUS 的部分 被弄得有點亂,哈哈 所以我來到這邊請教各位一下 我目前成功在 Loopback mode 丟出資料和收回來 不過我想請教的是 我現在想要改成 Normal mode 就是用一個晶片丟出資料到 CAN BUS,再用另一個去接受他 請問一下,這兩個 mode 之下 code 和 filter 的部分是不是要改什麼東西? 還是如果在 loopback mode 成功丟出去,和收回來 照理來講,normal mode 也是不是應該照正常丟出和收回來? 因為目前我怎麼用,都收不到任何的資料 我不曉得是不是在 normal mode 和 loopback mode 有什麼差別? 是不是 filter 和 mask 有需要做什麼不同的設定? 或是有沒有其他要增加或注意的地方? 我寫的方法都用 AN738 裡面的 function 用的順序是 CANInitialize CANSetOperationMode(CAN_OP_MODE_CONFIG) CANSetMask CANSetFilter CANSetOperationMode(CAN_OP_MODE_NORMAL) if (CANIsTxReady( ) ) { CANSendMessage( MESSAGE_ID1,TX_Data_Buf1,5,CAN_TX_PRIORITY_0 & CAN_TX_STD_FRAME & CAN_TX_NO_RTR_FRAME ) ; } } if ( CANIsRxReady( ) ) { CANReceiveMessage(&RX_ID1,RX_Data_Buf1,&RX_Data_Len1,&RX1_Message_Flag ) ; } 不知道能不能請教一下各位,為什麼我都接收不到資料? 我的 message_id = 0x002 RX_Filter0 = 0x002 RXB0_mask = 0x7ff 再次謝謝
發表於: 2008/2/29 10:47
|
|||
|