MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / FCan_SendByIrq

Function FCan_SendByIrq

bsp/ft2004/libraries/bsp/ft_can/ft_can.c:184–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182}
183
184u32 FCan_SendByIrq(FCan_t *Can_p,
185 struct FCan_Frame *Frame_p,
186 u32 FrameNumber, void (*UserIrqWait)(void))
187{
188 FCan_Config_t *Config_p;
189 u32 FrameIndex = 0;
190 u32 NeedSendOnce;
191 u32 cnt = 0;
192 Ft_assertZeroNum(Can_p != NULL);
193 Ft_assertZeroNum(Can_p->IsReady == FT_COMPONENT_IS_READLY);
194 Config_p = &Can_p->Config;
195
196 if (NULL == Frame_p)
197 {
198 FT_CAN_DEBUG_E("Frame_p is NULL , %s: %d", __FILE__, __LINE__);
199 return 0;
200 }
201
202 if (0 == FrameNumber)
203 {
204 FT_CAN_DEBUG_E("FrameNumber is 0 , %s: %d", __FILE__, __LINE__);
205 return 0;
206 }
207
208 for (; 0 < FrameNumber;)
209 {
210 if (FrameNumber > Config_p->TxFifoDeepth)
211 {
212 NeedSendOnce = Config_p->TxFifoDeepth;
213 FrameNumber -= Config_p->TxFifoDeepth;
214 }
215 else
216 {
217 NeedSendOnce = FrameNumber;
218 FrameNumber = 0;
219 }
220 Ft_printf("shut down tranmission \r\n");
221 /*shut down tranmission*/
222 FCan_ClearBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_XFER_MASK);
223 FCan_ClearBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_TXREQ_MASK);
224 FCan_SetBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_XFER_MASK);
225 Ft_printf("NeedSendOnce %d \r\n", NeedSendOnce);
226 for (cnt = 0; cnt < NeedSendOnce; cnt++)
227 {
228 FCan_SendFifo(Can_p, &Frame_p[FrameIndex]);
229 FrameIndex++;
230 }
231 Can_p->TxFifoCnt = NeedSendOnce;
232
233 /* triggers tranmission */
234 FCan_ClearBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_XFER_MASK);
235 FCan_SetBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_TXREQ_MASK);
236 FCan_SetBit(Config_p->CanBaseAddress, FCAN_CTRL_OFFSET, FCAN_CTRL_TXREQ_MASK | FCAN_CTRL_XFER_MASK);
237
238 if (UserIrqWait)
239 {
240 UserIrqWait();
241 }

Callers 2

_can_sendmsgFunction · 0.85

Calls 2

Ft_printfFunction · 0.85
FCan_SendFifoFunction · 0.85

Tested by

no test coverage detected