uint8_t can_transmit(can_typedef* canx, cantxmsg* txmessage)
else if ((canx->tsr&can_tsr_tme1) == can_tsr_tme1)
else if ((canx->tsr&can_tsr_tme2) == can_tsr_tme2)
else
if (transmit_mailbox != can_txstatus_nomailbox)//主要是配置郵箱的4個暫存器
else//擴充套件偵
/* set up the dlc */
txmessage->dlc &= (uint8_t)0x0000000f;//郵箱資料長度和時間戳暫存器can_tdtxr
canx->stxmailbox[transmit_mailbox].tdtr &= (uint32_t)0xfffffff0;
canx->stxmailbox[transmit_mailbox].tdtr |= txmessage->dlc;//資料長度
/* set up the data field */設定資料暫存器有高4位元組和低4位元組
canx->stxmailbox[transmit_mailbox].tdlr = (((uint32_t)txmessage->data[3] << 24) |
((uint32_t)txmessage->data[2] << 16) |
((uint32_t)txmessage->data[1] << 8) |
((uint32_t)txmessage->data[0]));
canx->stxmailbox[transmit_mailbox].tdhr = (((uint32_t)txmessage->data[7] << 24) |
((uint32_t)txmessage->data[6] << 16) |
((uint32_t)txmessage->data[5] << 8) |
((uint32_t)txmessage->data[4]));
/* request transmission */
canx->stxmailbox[transmit_mailbox].tir |= tmidxr_txrq;//請求傳送
} return transmit_mailbox;//返回0~2就成功,4失敗.
}
STM32 CAN通訊問題
檢舉 2012 07 04 20 59 breath123 分類 工程技術科學 瀏覽974次 can通訊測試中 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴充套件id不是如下的就拋棄掉,是的話,會存入fifo0。can filterinitstructure.can filteridhigh...
關於STM32 CAN 傳送失敗問題解釋
首先解釋一下can幾個配置的功能 1.can initstruct.can ttcm disable 這個只在某些can標準中使用,就設定為disable。2.can initstruct.can abom enable 這個位我們使能該功能,使用該功能可以在節點出錯離線後適時的自動恢復,不需要軟體...
STM32 CAN通訊硬體設計
隔離方案就不說了,之前的usb轉485工具的開發在這塊已經有些基礎。其實板上非隔離can介面設計還有一些額外的注意點。回到最基礎的知識依然是cmos ttl 推挽 開漏的問題。正點原子開發板,can電路最為簡易,基本無可用性 看看乙個常用電路 非隔離 tx rx直連stm32引腳 ft 覺得還是要使...