Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
drv_canfdspi_api.h
00001 /******************************************************************************* 00002 CAN FD SPI Driver: API Functions Header File 00003 00004 Company: 00005 Microchip Technology Inc. 00006 00007 File Name: 00008 drv_canfdspi_api.h 00009 00010 Summary: 00011 This header file provides the API function prototypes for the CAN FD SPI 00012 controller. 00013 00014 Description: 00015 API function prototypes for the CAN FD SPI controller like the MCP2517FD. 00016 *******************************************************************************/ 00017 00018 //DOM-IGNORE-BEGIN 00019 /******************************************************************************* 00020 Copyright (c) 2016 Microchip Technology Inc. and its subsidiaries. 00021 You may use this software and any derivatives exclusively with Microchip products. 00022 00023 THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". 00024 NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, 00025 INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, 00026 AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, 00027 COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. 00028 00029 IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 00030 INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER 00031 RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED 00032 OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, 00033 MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE 00034 WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. 00035 00036 MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS. 00037 *******************************************************************************/ 00038 //DOM-IGNORE-END 00039 00040 #ifndef _DRV_CANFDSPI_API_H 00041 #define _DRV_CANFDSPI_API_H 00042 00043 // ***************************************************************************** 00044 // ***************************************************************************** 00045 // Section: Included Files 00046 00047 #include <stdint.h> 00048 #include <stdbool.h> 00049 #include <stddef.h> 00050 #include <stdlib.h> 00051 #include "drv_canfdspi_defines.h" 00052 00053 // DOM-IGNORE-BEGIN 00054 #ifdef __cplusplus // Provide C++ Compatibility 00055 extern "C" { 00056 #endif 00057 // DOM-IGNORE-END 00058 00059 typedef uint8_t CANFDSPI_MODULE_ID; 00060 00061 // ***************************************************************************** 00062 // ***************************************************************************** 00063 //! Reset DUT 00064 00065 int8_t DRV_CANFDSPI_Reset(CANFDSPI_MODULE_ID index); 00066 00067 00068 // ***************************************************************************** 00069 // ***************************************************************************** 00070 // Section: SPI Access Functions 00071 00072 // ***************************************************************************** 00073 //! SPI Read Byte 00074 00075 int8_t DRV_CANFDSPI_ReadByte(CANFDSPI_MODULE_ID index, uint16_t address, 00076 uint8_t *rxd); 00077 00078 // ***************************************************************************** 00079 //! SPI Write Byte 00080 00081 int8_t DRV_CANFDSPI_WriteByte(CANFDSPI_MODULE_ID index, uint16_t address, 00082 uint8_t txd); 00083 00084 // ***************************************************************************** 00085 //! SPI Read Word 00086 00087 int8_t DRV_CANFDSPI_ReadWord(CANFDSPI_MODULE_ID index, uint16_t address, 00088 uint32_t *rxd); 00089 00090 // ***************************************************************************** 00091 //! SPI Write Word 00092 00093 int8_t DRV_CANFDSPI_WriteWord(CANFDSPI_MODULE_ID index, uint16_t address, 00094 uint32_t txd); 00095 00096 /// ***************************************************************************** 00097 //! SPI Read Word 00098 00099 int8_t DRV_CANFDSPI_ReadHalfWord(CANFDSPI_MODULE_ID index, uint16_t address, 00100 uint16_t *rxd); 00101 00102 // ***************************************************************************** 00103 //! SPI Write Word 00104 00105 int8_t DRV_CANFDSPI_WriteHalfWord(CANFDSPI_MODULE_ID index, uint16_t address, 00106 uint16_t txd); 00107 00108 // ***************************************************************************** 00109 //! SPI Read Byte Array 00110 00111 int8_t DRV_CANFDSPI_ReadByteArray(CANFDSPI_MODULE_ID index, uint16_t address, 00112 uint8_t *rxd, uint16_t nBytes); 00113 00114 // ***************************************************************************** 00115 //! SPI Write Byte Array 00116 00117 int8_t DRV_CANFDSPI_WriteByteArray(CANFDSPI_MODULE_ID index, uint16_t address, 00118 uint8_t *txd, uint16_t nBytes); 00119 00120 // ***************************************************************************** 00121 //! SPI SFR Write Byte Safe 00122 /*! 00123 * Writes Byte to SFR at address using SPI CRC. Byte gets only written if CRC matches. 00124 * 00125 * Remark: The function doesn't check if the address is an SFR address. 00126 */ 00127 00128 int8_t DRV_CANFDSPI_WriteByteSafe(CANFDSPI_MODULE_ID index, uint16_t address, 00129 uint8_t txd); 00130 00131 // ***************************************************************************** 00132 //! SPI RAM Write Word Safe 00133 /*! 00134 * Writes Word to RAM at address using SPI CRC. Word gets only written if CRC matches. 00135 * 00136 * Remark: The function doesn't check if the address is a RAM address. 00137 */ 00138 00139 int8_t DRV_CANFDSPI_WriteWordSafe(CANFDSPI_MODULE_ID index, uint16_t address, 00140 uint32_t txd); 00141 00142 // ***************************************************************************** 00143 //! SPI Read Byte Array with CRC 00144 00145 int8_t DRV_CANFDSPI_ReadByteArrayWithCRC(CANFDSPI_MODULE_ID index, uint16_t address, 00146 uint8_t *rxd, uint16_t nBytes, bool fromRam, bool* crcIsCorrect); 00147 00148 // ***************************************************************************** 00149 //! SPI Write Byte Array with CRC 00150 00151 int8_t DRV_CANFDSPI_WriteByteArrayWithCRC(CANFDSPI_MODULE_ID index, uint16_t address, 00152 uint8_t *txd, uint16_t nBytes, bool fromRam); 00153 00154 // ***************************************************************************** 00155 //! SPI Read Word Array 00156 00157 int8_t DRV_CANFDSPI_ReadWordArray(CANFDSPI_MODULE_ID index, uint16_t address, 00158 uint32_t *rxd, uint16_t nWords); 00159 00160 // ***************************************************************************** 00161 //! SPI Write Word Array 00162 00163 int8_t DRV_CANFDSPI_WriteWordArray(CANFDSPI_MODULE_ID index, uint16_t address, 00164 uint32_t *txd, uint16_t nWords); 00165 00166 00167 // ***************************************************************************** 00168 // ***************************************************************************** 00169 // Section: Configuration 00170 00171 // ***************************************************************************** 00172 //! CAN Control register configuration 00173 00174 int8_t DRV_CANFDSPI_Configure(CANFDSPI_MODULE_ID index, CAN_CONFIG* config); 00175 00176 // ***************************************************************************** 00177 //! Reset Configure object to reset values 00178 int8_t DRV_CANFDSPI_ConfigureObjectReset(CAN_CONFIG* config); 00179 00180 00181 // ***************************************************************************** 00182 // ***************************************************************************** 00183 // Section: Operating mode 00184 00185 // ***************************************************************************** 00186 //! Select Operation Mode 00187 00188 int8_t DRV_CANFDSPI_OperationModeSelect(CANFDSPI_MODULE_ID index, 00189 CAN_OPERATION_MODE opMode); 00190 00191 // ***************************************************************************** 00192 //! Get Operation Mode 00193 00194 CAN_OPERATION_MODE DRV_CANFDSPI_OperationModeGet(CANFDSPI_MODULE_ID index); 00195 00196 00197 // ***************************************************************************** 00198 // ***************************************************************************** 00199 // Section: CAN Transmit 00200 00201 // ***************************************************************************** 00202 //! Configure Transmit FIFO 00203 00204 int8_t DRV_CANFDSPI_TransmitChannelConfigure(CANFDSPI_MODULE_ID index, 00205 CAN_FIFO_CHANNEL channel, CAN_TX_FIFO_CONFIG* config); 00206 00207 // ***************************************************************************** 00208 //! Reset TransmitChannelConfigure object to reset values 00209 00210 int8_t DRV_CANFDSPI_TransmitChannelConfigureObjectReset(CAN_TX_FIFO_CONFIG* config); 00211 00212 // ***************************************************************************** 00213 //! Configure Transmit Queue 00214 00215 int8_t DRV_CANFDSPI_TransmitQueueConfigure(CANFDSPI_MODULE_ID index, 00216 CAN_TX_QUEUE_CONFIG* config); 00217 00218 // ***************************************************************************** 00219 //! Reset TransmitQueueConfigure object to reset values 00220 00221 int8_t DRV_CANFDSPI_TransmitQueueConfigureObjectReset(CAN_TX_QUEUE_CONFIG* config); 00222 00223 // ***************************************************************************** 00224 //! TX Channel Load 00225 /*! 00226 * Loads data into Transmit channel 00227 * Requests transmission, if flush==true 00228 */ 00229 00230 int8_t DRV_CANFDSPI_TransmitChannelLoad(CANFDSPI_MODULE_ID index, 00231 CAN_FIFO_CHANNEL channel, CAN_TX_MSGOBJ* txObj, 00232 uint8_t *txd, uint32_t txdNumBytes, bool flush); 00233 00234 // ***************************************************************************** 00235 //! TX Channel Flush 00236 /*! 00237 * Set TXREG of one channel 00238 */ 00239 00240 int8_t DRV_CANFDSPI_TransmitChannelFlush(CANFDSPI_MODULE_ID index, 00241 CAN_FIFO_CHANNEL channel); 00242 00243 // ***************************************************************************** 00244 //! Transmit Channel Status Get 00245 00246 int8_t DRV_CANFDSPI_TransmitChannelStatusGet(CANFDSPI_MODULE_ID index, 00247 CAN_FIFO_CHANNEL channel, CAN_TX_FIFO_STATUS* status); 00248 00249 // ***************************************************************************** 00250 //! Transmit FIFO Reset 00251 00252 int8_t DRV_CANFDSPI_TransmitChannelReset(CANFDSPI_MODULE_ID index, 00253 CAN_FIFO_CHANNEL channel); 00254 00255 // ***************************************************************************** 00256 //! Transmit FIFO Update 00257 /*! 00258 * Sets UINC of the transmit channel. Keeps TXREQ unchanged. 00259 */ 00260 00261 int8_t DRV_CANFDSPI_TransmitChannelUpdate(CANFDSPI_MODULE_ID index, 00262 CAN_FIFO_CHANNEL channel, bool flush); 00263 00264 // ***************************************************************************** 00265 //! Request transmissions using TXREQ register 00266 00267 int8_t DRV_CANFDSPI_TransmitRequestSet(CANFDSPI_MODULE_ID index, 00268 CAN_TXREQ_CHANNEL txreq); 00269 00270 // ***************************************************************************** 00271 //! Get TXREQ register 00272 00273 int8_t DRV_CANFDSPI_TransmitRequestGet(CANFDSPI_MODULE_ID index, 00274 uint32_t* txreq); 00275 00276 // ***************************************************************************** 00277 //! Abort transmission of single FIFO 00278 00279 int8_t DRV_CANFDSPI_TransmitChannelAbort(CANFDSPI_MODULE_ID index, 00280 CAN_FIFO_CHANNEL channel); 00281 00282 // ***************************************************************************** 00283 //! Abort All transmissions 00284 00285 int8_t DRV_CANFDSPI_TransmitAbortAll(CANFDSPI_MODULE_ID index); 00286 00287 // ***************************************************************************** 00288 //! Set Transmit Bandwidth Sharing Delay 00289 int8_t DRV_CANFDSPI_TransmitBandWidthSharingSet(CANFDSPI_MODULE_ID index, 00290 CAN_TX_BANDWITH_SHARING txbws); 00291 00292 00293 // ***************************************************************************** 00294 // ***************************************************************************** 00295 // Section: CAN Receive 00296 00297 // ***************************************************************************** 00298 //! Filter Object Configuration 00299 /*! 00300 * Configures ID of filter object 00301 */ 00302 00303 int8_t DRV_CANFDSPI_FilterObjectConfigure(CANFDSPI_MODULE_ID index, 00304 CAN_FILTER filter, CAN_FILTEROBJ_ID* id); 00305 00306 // ***************************************************************************** 00307 //! Filter Mask Configuration 00308 /*! 00309 * Configures Mask of filter object 00310 */ 00311 00312 int8_t DRV_CANFDSPI_FilterMaskConfigure(CANFDSPI_MODULE_ID index, 00313 CAN_FILTER filter, CAN_MASKOBJ_ID* mask); 00314 00315 // ***************************************************************************** 00316 //! Link Filter to FIFO 00317 /*! 00318 * Initializes the Pointer from Filter to FIFO 00319 * Enables or disables the Filter 00320 */ 00321 00322 int8_t DRV_CANFDSPI_FilterToFifoLink(CANFDSPI_MODULE_ID index, 00323 CAN_FILTER filter, CAN_FIFO_CHANNEL channel, bool enable); 00324 00325 // ***************************************************************************** 00326 //! Filter Enable 00327 00328 int8_t DRV_CANFDSPI_FilterEnable(CANFDSPI_MODULE_ID index, CAN_FILTER filter); 00329 00330 // ***************************************************************************** 00331 //! Filter Disable 00332 00333 int8_t DRV_CANFDSPI_FilterDisable(CANFDSPI_MODULE_ID index, CAN_FILTER filter); 00334 00335 // ***************************************************************************** 00336 //! Set Device Net Filter Count 00337 int8_t DRV_CANFDSPI_DeviceNetFilterCountSet(CANFDSPI_MODULE_ID index, 00338 CAN_DNET_FILTER_SIZE dnfc); 00339 00340 // ***************************************************************************** 00341 //! Configure Receive FIFO 00342 00343 int8_t DRV_CANFDSPI_ReceiveChannelConfigure(CANFDSPI_MODULE_ID index, 00344 CAN_FIFO_CHANNEL channel, CAN_RX_FIFO_CONFIG* config); 00345 00346 // ***************************************************************************** 00347 //! Reset ReceiveChannelConfigure object to reset value 00348 00349 int8_t DRV_CANFDSPI_ReceiveChannelConfigureObjectReset(CAN_RX_FIFO_CONFIG* config); 00350 00351 // ***************************************************************************** 00352 //! Receive Channel Status Get 00353 00354 int8_t DRV_CANFDSPI_ReceiveChannelStatusGet(CANFDSPI_MODULE_ID index, 00355 CAN_FIFO_CHANNEL channel, CAN_RX_FIFO_STATUS* status); 00356 00357 // ***************************************************************************** 00358 //! Get Received Message 00359 /*! 00360 * Reads Received message from channel 00361 */ 00362 00363 int8_t DRV_CANFDSPI_ReceiveMessageGet(CANFDSPI_MODULE_ID index, 00364 CAN_FIFO_CHANNEL channel, CAN_RX_MSGOBJ* rxObj, 00365 uint8_t *rxd, uint8_t nBytes); 00366 00367 // ***************************************************************************** 00368 //! Receive FIFO Reset 00369 00370 int8_t DRV_CANFDSPI_ReceiveChannelReset(CANFDSPI_MODULE_ID index, 00371 CAN_FIFO_CHANNEL channel); 00372 00373 // ***************************************************************************** 00374 //! Receive FIFO Update 00375 /*! 00376 * Sets UINC of the receive channel. 00377 */ 00378 00379 int8_t DRV_CANFDSPI_ReceiveChannelUpdate(CANFDSPI_MODULE_ID index, 00380 CAN_FIFO_CHANNEL channel); 00381 00382 00383 // ***************************************************************************** 00384 // ***************************************************************************** 00385 // Section: Transmit Event FIFO 00386 00387 // ***************************************************************************** 00388 //! Transmit Event FIFO Status Get 00389 00390 int8_t DRV_CANFDSPI_TefStatusGet(CANFDSPI_MODULE_ID index, 00391 CAN_TEF_FIFO_STATUS* status); 00392 00393 // ***************************************************************************** 00394 //! Get Transmit Event FIFO Message 00395 /*! 00396 * Reads Transmit Event FIFO message 00397 */ 00398 00399 int8_t DRV_CANFDSPI_TefMessageGet(CANFDSPI_MODULE_ID index, 00400 CAN_TEF_MSGOBJ* tefObj); 00401 00402 // ***************************************************************************** 00403 //! Transmit Event FIFO Reset 00404 00405 int8_t DRV_CANFDSPI_TefReset(CANFDSPI_MODULE_ID index); 00406 00407 // ***************************************************************************** 00408 //! Transmit Event FIFO Update 00409 /*! 00410 * Sets UINC of the TEF. 00411 */ 00412 00413 int8_t DRV_CANFDSPI_TefUpdate(CANFDSPI_MODULE_ID index); 00414 00415 // ***************************************************************************** 00416 //! Configure Transmit Event FIFO 00417 00418 int8_t DRV_CANFDSPI_TefConfigure(CANFDSPI_MODULE_ID index, CAN_TEF_CONFIG* config); 00419 00420 // ***************************************************************************** 00421 //! Reset TefConfigure object to reset value 00422 00423 int8_t DRV_CANFDSPI_TefConfigureObjectReset(CAN_TEF_CONFIG* config); 00424 00425 00426 // ***************************************************************************** 00427 // ***************************************************************************** 00428 // Section: Module Events 00429 00430 // ***************************************************************************** 00431 //! Module Event Get 00432 /*! 00433 * Reads interrupt Flags 00434 */ 00435 00436 int8_t DRV_CANFDSPI_ModuleEventGet(CANFDSPI_MODULE_ID index, 00437 CAN_MODULE_EVENT* flags); 00438 00439 // ***************************************************************************** 00440 //! Module Event Enable 00441 /*! 00442 * Enables interrupts 00443 */ 00444 00445 int8_t DRV_CANFDSPI_ModuleEventEnable(CANFDSPI_MODULE_ID index, 00446 CAN_MODULE_EVENT flags); 00447 00448 // ***************************************************************************** 00449 //! Module Event Disable 00450 /*! 00451 * Disables interrupts 00452 */ 00453 00454 int8_t DRV_CANFDSPI_ModuleEventDisable(CANFDSPI_MODULE_ID index, 00455 CAN_MODULE_EVENT flags); 00456 00457 // ***************************************************************************** 00458 //! Module Event Clear 00459 /*! 00460 * Clears interrupt Flags 00461 */ 00462 00463 int8_t DRV_CANFDSPI_ModuleEventClear(CANFDSPI_MODULE_ID index, 00464 CAN_MODULE_EVENT flags); 00465 00466 // ***************************************************************************** 00467 //! Get RX Code 00468 00469 int8_t DRV_CANFDSPI_ModuleEventRxCodeGet(CANFDSPI_MODULE_ID index, 00470 CAN_RXCODE* rxCode); 00471 00472 // ***************************************************************************** 00473 //! Get TX Code 00474 00475 int8_t DRV_CANFDSPI_ModuleEventTxCodeGet(CANFDSPI_MODULE_ID index, 00476 CAN_TXCODE* txCode); 00477 00478 // ***************************************************************************** 00479 //! Get Filter Hit 00480 00481 int8_t DRV_CANFDSPI_ModuleEventFilterHitGet(CANFDSPI_MODULE_ID index, 00482 CAN_FILTER* filterHit); 00483 00484 // ***************************************************************************** 00485 //! Get ICODE 00486 00487 int8_t DRV_CANFDSPI_ModuleEventIcodeGet(CANFDSPI_MODULE_ID index, 00488 CAN_ICODE* icode); 00489 00490 // ***************************************************************************** 00491 // ***************************************************************************** 00492 // Section: Transmit FIFO Events 00493 00494 // ***************************************************************************** 00495 //! Transmit FIFO Event Get 00496 /*! 00497 * Reads Transmit FIFO interrupt Flags 00498 */ 00499 00500 int8_t DRV_CANFDSPI_TransmitChannelEventGet(CANFDSPI_MODULE_ID index, 00501 CAN_FIFO_CHANNEL channel, CAN_TX_FIFO_EVENT* flags); 00502 00503 // ***************************************************************************** 00504 //! Get pending interrupts of all transmit FIFOs 00505 00506 int8_t DRV_CANFDSPI_TransmitEventGet(CANFDSPI_MODULE_ID index, uint32_t* txif); 00507 00508 // ***************************************************************************** 00509 //! Get pending TXATIF of all transmit FIFOs 00510 00511 int8_t DRV_CANFDSPI_TransmitEventAttemptGet(CANFDSPI_MODULE_ID index, 00512 uint32_t* txatif); 00513 00514 // ***************************************************************************** 00515 //! Transmit FIFO Index Get 00516 /*! 00517 * Reads Transmit FIFO Index 00518 */ 00519 00520 int8_t DRV_CANFDSPI_TransmitChannelIndexGet(CANFDSPI_MODULE_ID index, 00521 CAN_FIFO_CHANNEL channel, uint8_t* idx); 00522 00523 // ***************************************************************************** 00524 //! Transmit FIFO Event Enable 00525 /*! 00526 * Enables Transmit FIFO interrupts 00527 */ 00528 00529 int8_t DRV_CANFDSPI_TransmitChannelEventEnable(CANFDSPI_MODULE_ID index, 00530 CAN_FIFO_CHANNEL channel, CAN_TX_FIFO_EVENT flags); 00531 00532 // ***************************************************************************** 00533 //! Transmit FIFO Event Disable 00534 /*! 00535 * Disables Transmit FIFO interrupts 00536 */ 00537 00538 int8_t DRV_CANFDSPI_TransmitChannelEventDisable(CANFDSPI_MODULE_ID index, 00539 CAN_FIFO_CHANNEL channel, CAN_TX_FIFO_EVENT flags); 00540 00541 // ***************************************************************************** 00542 //! Transmit FIFO Event Clear 00543 /*! 00544 * Clears Transmit FIFO Attempts Exhausted interrupt Flag 00545 */ 00546 00547 int8_t DRV_CANFDSPI_TransmitChannelEventAttemptClear(CANFDSPI_MODULE_ID index, 00548 CAN_FIFO_CHANNEL channel); 00549 00550 00551 // ***************************************************************************** 00552 // ***************************************************************************** 00553 // Section: Receive FIFO Events 00554 00555 // ***************************************************************************** 00556 //! Receive FIFO Event Get 00557 /*! 00558 * Reads Receive FIFO interrupt Flags 00559 */ 00560 00561 int8_t DRV_CANFDSPI_ReceiveChannelEventGet(CANFDSPI_MODULE_ID index, 00562 CAN_FIFO_CHANNEL channel, CAN_RX_FIFO_EVENT* flags); 00563 00564 // ***************************************************************************** 00565 //! Get pending interrupts of all receive FIFOs 00566 00567 int8_t DRV_CANFDSPI_ReceiveEventGet(CANFDSPI_MODULE_ID index, uint32_t* rxif); 00568 00569 // ***************************************************************************** 00570 //!Get pending RXOVIF of all receive FIFOs 00571 00572 int8_t DRV_CANFDSPI_ReceiveEventOverflowGet(CANFDSPI_MODULE_ID index, uint32_t* rxovif); 00573 00574 // ***************************************************************************** 00575 //! Receive FIFO Index Get 00576 /*! 00577 * Reads Receive FIFO Index 00578 */ 00579 00580 int8_t DRV_CANFDSPI_ReceiveChannelIndexGet(CANFDSPI_MODULE_ID index, 00581 CAN_FIFO_CHANNEL channel, uint8_t* idx); 00582 00583 // ***************************************************************************** 00584 //! Receive FIFO Event Enable 00585 /*! 00586 * Enables Receive FIFO interrupts 00587 */ 00588 00589 int8_t DRV_CANFDSPI_ReceiveChannelEventEnable(CANFDSPI_MODULE_ID index, 00590 CAN_FIFO_CHANNEL channel, CAN_RX_FIFO_EVENT flags); 00591 00592 // ***************************************************************************** 00593 //! Receive FIFO Event Disable 00594 /*! 00595 * Disables Receive FIFO interrupts 00596 */ 00597 00598 int8_t DRV_CANFDSPI_ReceiveChannelEventDisable(CANFDSPI_MODULE_ID index, 00599 CAN_FIFO_CHANNEL channel, CAN_RX_FIFO_EVENT flags); 00600 00601 // ***************************************************************************** 00602 //! Receive FIFO Event Clear 00603 /*! 00604 * Clears Receive FIFO Overflow interrupt Flag 00605 */ 00606 00607 int8_t DRV_CANFDSPI_ReceiveChannelEventOverflowClear(CANFDSPI_MODULE_ID index, 00608 CAN_FIFO_CHANNEL channel); 00609 00610 00611 // ***************************************************************************** 00612 // ***************************************************************************** 00613 // Section: Transmit Event FIFO Events 00614 00615 // ***************************************************************************** 00616 //! Transmit Event FIFO Event Get 00617 /*! 00618 * Reads Transmit Event FIFO interrupt Flags 00619 */ 00620 00621 int8_t DRV_CANFDSPI_TefEventGet(CANFDSPI_MODULE_ID index, 00622 CAN_TEF_FIFO_EVENT* flags); 00623 00624 // ***************************************************************************** 00625 //! Transmit Event FIFO Event Enable 00626 /*! 00627 * Enables Transmit Event FIFO interrupts 00628 */ 00629 00630 int8_t DRV_CANFDSPI_TefEventEnable(CANFDSPI_MODULE_ID index, 00631 CAN_TEF_FIFO_EVENT flags); 00632 00633 // ***************************************************************************** 00634 //! Transmit Event FIFO Event Disable 00635 /*! 00636 * Disables Transmit Event FIFO interrupts 00637 */ 00638 00639 int8_t DRV_CANFDSPI_TefEventDisable(CANFDSPI_MODULE_ID index, 00640 CAN_TEF_FIFO_EVENT flags); 00641 00642 // ***************************************************************************** 00643 //! Transmit Event FIFO Event Clear 00644 /*! 00645 * Clears Transmit Event FIFO Overflow interrupt Flag 00646 */ 00647 00648 int8_t DRV_CANFDSPI_TefEventOverflowClear(CANFDSPI_MODULE_ID index); 00649 00650 00651 // ***************************************************************************** 00652 // ***************************************************************************** 00653 // Section: Error Handling 00654 00655 // ***************************************************************************** 00656 //! Transmit Error Count Get 00657 00658 int8_t DRV_CANFDSPI_ErrorCountTransmitGet(CANFDSPI_MODULE_ID index, 00659 uint8_t* tec); 00660 00661 // ***************************************************************************** 00662 //! Receive Error Count Get 00663 00664 int8_t DRV_CANFDSPI_ErrorCountReceiveGet(CANFDSPI_MODULE_ID index, 00665 uint8_t* rec); 00666 00667 // ***************************************************************************** 00668 //! Error State Get 00669 00670 int8_t DRV_CANFDSPI_ErrorStateGet(CANFDSPI_MODULE_ID index, 00671 CAN_ERROR_STATE* flags); 00672 00673 // ***************************************************************************** 00674 //! Error Counts and Error State Get 00675 /*! 00676 * Returns content of complete CiTREC 00677 */ 00678 00679 int8_t DRV_CANFDSPI_ErrorCountStateGet(CANFDSPI_MODULE_ID index, 00680 uint8_t* tec, uint8_t* rec, CAN_ERROR_STATE* flags); 00681 00682 // ***************************************************************************** 00683 //! Get Bus Diagnostic Registers: all data at once, since we want to keep them in synch 00684 00685 int8_t DRV_CANFDSPI_BusDiagnosticsGet(CANFDSPI_MODULE_ID index, 00686 CAN_BUS_DIAGNOSTIC* bd); 00687 00688 // ***************************************************************************** 00689 //! Clear Bus Diagnostic Registers 00690 00691 int8_t DRV_CANFDSPI_BusDiagnosticsClear(CANFDSPI_MODULE_ID index); 00692 00693 00694 // ***************************************************************************** 00695 // ***************************************************************************** 00696 // Section: ECC 00697 00698 // ***************************************************************************** 00699 //! Enable ECC 00700 00701 int8_t DRV_CANFDSPI_EccEnable(CANFDSPI_MODULE_ID index); 00702 00703 // ***************************************************************************** 00704 //! Disable ECC 00705 00706 int8_t DRV_CANFDSPI_EccDisable(CANFDSPI_MODULE_ID index); 00707 00708 // ***************************************************************************** 00709 //! ECC Event Get 00710 00711 int8_t DRV_CANFDSPI_EccEventGet(CANFDSPI_MODULE_ID index, 00712 CAN_ECC_EVENT* flags); 00713 00714 // ***************************************************************************** 00715 //! Set ECC Parity 00716 00717 int8_t DRV_CANFDSPI_EccParitySet(CANFDSPI_MODULE_ID index, 00718 uint8_t parity); 00719 00720 // ***************************************************************************** 00721 //! Get ECC Parity 00722 00723 int8_t DRV_CANFDSPI_EccParityGet(CANFDSPI_MODULE_ID index, 00724 uint8_t* parity); 00725 00726 // ***************************************************************************** 00727 //! Get ECC Error Address 00728 00729 int8_t DRV_CANFDSPI_EccErrorAddressGet(CANFDSPI_MODULE_ID index, 00730 uint16_t* a); 00731 00732 // ***************************************************************************** 00733 //! ECC Event Enable 00734 00735 int8_t DRV_CANFDSPI_EccEventEnable(CANFDSPI_MODULE_ID index, 00736 CAN_ECC_EVENT flags); 00737 00738 // ***************************************************************************** 00739 //! ECC Event Disable 00740 00741 int8_t DRV_CANFDSPI_EccEventDisable(CANFDSPI_MODULE_ID index, 00742 CAN_ECC_EVENT flags); 00743 00744 // ***************************************************************************** 00745 //! ECC Event Clear 00746 00747 int8_t DRV_CANFDSPI_EccEventClear(CANFDSPI_MODULE_ID index, 00748 CAN_ECC_EVENT flags); 00749 00750 // ***************************************************************************** 00751 //! Initialize RAM 00752 00753 int8_t DRV_CANFDSPI_RamInit(CANFDSPI_MODULE_ID index, uint8_t d); 00754 00755 00756 // ***************************************************************************** 00757 // ***************************************************************************** 00758 // Section: CRC 00759 00760 // ***************************************************************************** 00761 //! CRC Event Enable 00762 00763 int8_t DRV_CANFDSPI_CrcEventEnable(CANFDSPI_MODULE_ID index, 00764 CAN_CRC_EVENT flags); 00765 00766 // ***************************************************************************** 00767 //! CRC Event Disable 00768 00769 int8_t DRV_CANFDSPI_CrcEventDisable(CANFDSPI_MODULE_ID index, 00770 CAN_CRC_EVENT flags); 00771 00772 // ***************************************************************************** 00773 //! CRC Event Clear 00774 00775 int8_t DRV_CANFDSPI_CrcEventClear(CANFDSPI_MODULE_ID index, 00776 CAN_CRC_EVENT flags); 00777 00778 // ***************************************************************************** 00779 //! CRC Event Get 00780 00781 int8_t DRV_CANFDSPI_CrcEventGet(CANFDSPI_MODULE_ID index, CAN_CRC_EVENT* flags); 00782 00783 // ***************************************************************************** 00784 //! Get CRC Value from device 00785 00786 int8_t DRV_CANFDSPI_CrcValueGet(CANFDSPI_MODULE_ID index, uint16_t* crc); 00787 00788 00789 // ***************************************************************************** 00790 // ***************************************************************************** 00791 // Section: Time Stamp 00792 00793 // ***************************************************************************** 00794 //! Time Stamp Enable 00795 00796 int8_t DRV_CANFDSPI_TimeStampEnable(CANFDSPI_MODULE_ID index); 00797 00798 // ***************************************************************************** 00799 //! Time Stamp Disable 00800 00801 int8_t DRV_CANFDSPI_TimeStampDisable(CANFDSPI_MODULE_ID index); 00802 00803 // ***************************************************************************** 00804 //! Time Stamp Get 00805 00806 int8_t DRV_CANFDSPI_TimeStampGet(CANFDSPI_MODULE_ID index, uint32_t* ts); 00807 00808 // ***************************************************************************** 00809 //! Time Stamp Set 00810 00811 int8_t DRV_CANFDSPI_TimeStampSet(CANFDSPI_MODULE_ID index, uint32_t ts); 00812 00813 // ***************************************************************************** 00814 //! Time Stamp Mode Configure 00815 00816 int8_t DRV_CANFDSPI_TimeStampModeConfigure(CANFDSPI_MODULE_ID index, 00817 CAN_TS_MODE mode); 00818 00819 // ***************************************************************************** 00820 //! Time Stamp Prescaler Set 00821 00822 int8_t DRV_CANFDSPI_TimeStampPrescalerSet(CANFDSPI_MODULE_ID index, 00823 uint16_t ps); 00824 00825 00826 // ***************************************************************************** 00827 // ***************************************************************************** 00828 // Section: Oscillator and Bit Time 00829 00830 // ***************************************************************************** 00831 //! Enable oscillator to wake-up from sleep 00832 00833 int8_t DRV_CANFDSPI_OscillatorEnable(CANFDSPI_MODULE_ID index); 00834 00835 // ***************************************************************************** 00836 //! Set Oscillator Control 00837 00838 int8_t DRV_CANFDSPI_OscillatorControlSet(CANFDSPI_MODULE_ID index, 00839 CAN_OSC_CTRL ctrl); 00840 00841 int8_t DRV_CANFDSPI_OscillatorControlObjectReset(CAN_OSC_CTRL* ctrl); 00842 00843 00844 // ***************************************************************************** 00845 //! Get Oscillator Status 00846 00847 int8_t DRV_CANFDSPI_OscillatorStatusGet(CANFDSPI_MODULE_ID index, 00848 CAN_OSC_STATUS* status); 00849 00850 // ***************************************************************************** 00851 //! Configure Bit Time registers (based on CAN clock speed) 00852 00853 int8_t DRV_CANFDSPI_BitTimeConfigure(CANFDSPI_MODULE_ID index, 00854 CAN_BITTIME_SETUP bitTime, CAN_SSP_MODE sspMode, 00855 CAN_SYSCLK_SPEED clk); 00856 00857 // ***************************************************************************** 00858 //! Configure Nominal bit time for 40MHz system clock 00859 00860 int8_t DRV_CANFDSPI_BitTimeConfigureNominal40MHz(CANFDSPI_MODULE_ID index, 00861 CAN_BITTIME_SETUP bitTime); 00862 00863 // ***************************************************************************** 00864 //! Configure Data bit time for 40MHz system clock 00865 00866 int8_t DRV_CANFDSPI_BitTimeConfigureData40MHz(CANFDSPI_MODULE_ID index, 00867 CAN_BITTIME_SETUP bitTime, CAN_SSP_MODE sspMode); 00868 00869 // ***************************************************************************** 00870 //! Configure Nominal bit time for 20MHz system clock 00871 00872 int8_t DRV_CANFDSPI_BitTimeConfigureNominal20MHz(CANFDSPI_MODULE_ID index, 00873 CAN_BITTIME_SETUP bitTime); 00874 00875 // ***************************************************************************** 00876 //! Configure Data bit time for 20MHz system clock 00877 00878 int8_t DRV_CANFDSPI_BitTimeConfigureData20MHz(CANFDSPI_MODULE_ID index, 00879 CAN_BITTIME_SETUP bitTime, CAN_SSP_MODE sspMode); 00880 00881 // ***************************************************************************** 00882 //! Configure Nominal bit time for 10MHz system clock 00883 00884 int8_t DRV_CANFDSPI_BitTimeConfigureNominal10MHz(CANFDSPI_MODULE_ID index, 00885 CAN_BITTIME_SETUP bitTime); 00886 00887 // ***************************************************************************** 00888 //! Configure Data bit time for 10MHz system clock 00889 00890 int8_t DRV_CANFDSPI_BitTimeConfigureData10MHz(CANFDSPI_MODULE_ID index, 00891 CAN_BITTIME_SETUP bitTime, CAN_SSP_MODE sspMode); 00892 00893 00894 // ***************************************************************************** 00895 // ***************************************************************************** 00896 // Section: GPIO 00897 00898 // ***************************************************************************** 00899 //! Initialize GPIO Mode 00900 00901 int8_t DRV_CANFDSPI_GpioModeConfigure(CANFDSPI_MODULE_ID index, 00902 GPIO_PIN_MODE gpio0, GPIO_PIN_MODE gpio1); 00903 00904 // ***************************************************************************** 00905 //! Initialize GPIO Direction 00906 00907 int8_t DRV_CANFDSPI_GpioDirectionConfigure(CANFDSPI_MODULE_ID index, 00908 GPIO_PIN_DIRECTION gpio0, GPIO_PIN_DIRECTION gpio1); 00909 00910 // ***************************************************************************** 00911 //! Enable Transceiver Standby Control 00912 00913 int8_t DRV_CANFDSPI_GpioStandbyControlEnable(CANFDSPI_MODULE_ID index); 00914 00915 // ***************************************************************************** 00916 //! Disable Transceiver Standby Control 00917 00918 int8_t DRV_CANFDSPI_GpioStandbyControlDisable(CANFDSPI_MODULE_ID index); 00919 00920 // ***************************************************************************** 00921 //! Configure Open Drain Interrupts 00922 00923 int8_t DRV_CANFDSPI_GpioInterruptPinsOpenDrainConfigure(CANFDSPI_MODULE_ID index, 00924 GPIO_OPEN_DRAIN_MODE mode); 00925 00926 // ***************************************************************************** 00927 //! Configure Open Drain TXCAN 00928 00929 int8_t DRV_CANFDSPI_GpioTransmitPinOpenDrainConfigure(CANFDSPI_MODULE_ID index, 00930 GPIO_OPEN_DRAIN_MODE mode); 00931 00932 // ***************************************************************************** 00933 //! GPIO Output Pin Set 00934 00935 int8_t DRV_CANFDSPI_GpioPinSet(CANFDSPI_MODULE_ID index, 00936 GPIO_PIN_POS pos, GPIO_PIN_STATE latch); 00937 00938 // ***************************************************************************** 00939 //! GPIO Input Pin Read 00940 00941 int8_t DRV_CANFDSPI_GpioPinRead(CANFDSPI_MODULE_ID index, 00942 GPIO_PIN_POS pos, GPIO_PIN_STATE* state); 00943 00944 // ***************************************************************************** 00945 //! Configure CLKO Pin 00946 00947 int8_t DRV_CANFDSPI_GpioClockOutputConfigure(CANFDSPI_MODULE_ID index, 00948 GPIO_CLKO_MODE mode); 00949 00950 00951 // ***************************************************************************** 00952 // ***************************************************************************** 00953 // Section: Miscellaneous 00954 00955 // ***************************************************************************** 00956 //! DLC to number of actual data bytes conversion 00957 00958 uint32_t DRV_CANFDSPI_DlcToDataBytes(CAN_DLC dlc); 00959 00960 // ***************************************************************************** 00961 //! FIFO Index Get 00962 00963 int8_t DRV_CANFDSPI_FifoIndexGet(CANFDSPI_MODULE_ID index, 00964 CAN_FIFO_CHANNEL channel, uint8_t* mi); 00965 00966 // ***************************************************************************** 00967 //! Calculate CRC16 00968 00969 uint16_t DRV_CANFDSPI_CalculateCRC16(uint8_t* data, uint16_t size); 00970 00971 // ***************************************************************************** 00972 //! Data bytes to DLC conversion 00973 00974 CAN_DLC DRV_CANFDSPI_DataBytesToDlc(uint8_t n); 00975 00976 #ifdef __cplusplus // Provide C++ Compatibility 00977 } 00978 #endif 00979 00980 #endif // _DRV_CANFDSPI_API_H 00981
Generated on Mon Jul 25 2022 18:21:10 by
1.7.2