新會員
Joined
: 2006/4/10 11:07 最後登入時間
: 2018/2/14 9:56
Group:
註冊會員
Level : 2 HP : 0 / 40 MP : 5 / 2192 EXP : 62
|
連續傳送2個以上的0xFF,接收就會收不到或錯誤。 如果傳送不是連續的0xFF,例如0x00,0xAA,0x55,0xEE就不會有錯誤。 使用30F6010 Oscillator用7.5MHz 16倍頻,對 18F4480 Oscillator用 10MHz 4 倍頻。 不管是30F6010對18F4480傳送,或18F4480對30F6010傳送,都有上訴的問題。 使用示波器看BaudRate為125K 30F6010的設定如下: CAN1SetOperationMode( CAN_IDLE_STOP & CAN_MASTERCLOCK_0 & CAN_REQ_OPERMODE_CONFIG & CAN_CAPTURE_DIS ); CAN1Initialize( CAN_SYNC_JUMP_WIDTH4 & CAN_BAUD_PRE_SCALE(20), CAN_WAKEUP_BY_FILTER_DIS & CAN_PHASE_SEG2_TQ(8) & CAN_PHASE_SEG1_TQ(8) & CAN_PROPAGATIONTIME_SEG_TQ(7) & CAN_SEG2_FREE_PROG & CAN_SAMPLE3TIMES ) ; 18F4480的設定如下: CANInitialize( 4,8,8,6,5, CAN_CONFIG_LINE_FILTER_OFF & CAN_CONFIG_SAMPLE_THRICE & CAN_CONFIG_VALID_XTD_MSG & CAN_CONFIG_PHSEG2_PRG_ON & CAN_CONFIG_DBL_BUFFER_ON ) ; 我覺得是設定錯誤,用我的算法BaudRate 125K 時, 30F6010的SJW=4,BRP=19,PHSEG1=8,PHSEG2=8,PROPSEG=7,24Tq 18F4480的SJW=4,BRP=7 ,PHSEG1=8,PHSEG2=6,PROPSEG=5,20Tq 將這2個值帶入30F6010與18F4480後,完全無法接收資料,使用示波器觀察BaudRate 也不是125K。請問BaudRate要125時, 30F6010 Oscillator用7.5MHz 16倍頻, CAN1SetOperationMode()及CAN1Initialize() 18F4480 Oscillator用 10MHz 4 倍頻,CANInitialize()要如何做最佳設定,是否還有其它原因造成上訴情況?
發表於: 2006/6/5 13:53
|