Develope TJA1145 AND CYT2BL3_SERISE CANFD communication problem

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
frog
Level 1
Level 1
First like given First question asked Welcome!

i might set config right tja1145  but can trans message error

show this log

Cy_TJA1145_setNormalMode set SBC_GetMode 7 <-- set normal
transEvnt cbs 0
transEvnt cf 0
transEvnt cw 0
transEvnt pnfde 0
sysEvnt otw 0
sysEvnt po 10
sysEvnt spif 0
sysEvnt wdf 0
event trxe 0
cts 80 <-- get can active status
cpns 0
cbss 0
vcs 0
cfs 0
config cmc 1 <-- get cmc active can
set normal 
getCanStatus pre 0
can send
getCanStatus after 1

// and i check bitrate 1bit 2us 500k/bits

//init 

/* CAN configuration */
const cy_stc_canfd_config_t BLE_canCfg =
{
.txCallback = CAN_TxMsgCallback_Test, // Unused.
.rxCallback = CAN_RxMsgCallback_Test, //CAN_RxMsgCallback_Test,
.rxFifoWithTopCallback = NULL, //CAN_RxFifoWithTopCallback,
.statusCallback = NULL, // Un-supported now
.errorCallback = NULL, // Un-supported now
.canFDMode = true, // Use CANFD mode
.bitrate = // Nominal bit rate settings (sampling point = 80%)
{
.prescaler = 1u - 1u, // cclk/1, When using 500kbps, 1bit = 80tq
.timeSegment1 = 63u - 1u, // tseg1 = 63tq
.timeSegment2 = 16u - 1u, // tseg2 = 16tq
.syncJumpWidth = 16u - 1u, // sjw = 16tq
},
.fastBitrate = // Fast bit rate settings (sampling point = 75%)
{
.prescaler = 1u - 1u, // cclk/1, When using 2Mbps, 1bit = 20tq
.timeSegment1 = 14u - 1u, // tseg1 = 14tq,
.timeSegment2 = 5u - 1u, // tseg2 = 5tq
.syncJumpWidth = 4u - 1u, // sjw = 4tq (2,3,4tq)
},
.tdcConfig = // Transceiver delay compensation, unused.
{
.tdcEnabled = false,
.tdcOffset = 0,
.tdcFilterWindow= 0,
},
.sidFilterConfig = // Standard ID filter
{
.numberOfSIDFilters = sizeof(stdIdFilter_Test) / sizeof(stdIdFilter_Test[0]),
.sidFilter = stdIdFilter_Test,
},
.extidFilterConfig = // Extended ID filter
{
.numberOfEXTIDFilters = sizeof(extIdFilter_Test) / sizeof(extIdFilter_Test[0]),
.extidFilter = extIdFilter_Test,
.extIDANDMask = 0x1fffffff, // No pre filtering.
},
.globalFilterConfig = // Global filter
{
.nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.rejectRemoteFramesStandard = true, // No remote frame
.rejectRemoteFramesExtended = true, // No remote frame
},
.rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0Config = // RX FIFO0, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false,
},
.rxFifo1Config = // RX FIFO1, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false, // true,
},
.noOfRxBuffers = 4u,
.noOfTxBuffers = 4u,
};

// send message 

getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus pre %x\n", getCanStatus);

{
cy_stc_canfd_msg_t stcMsg;

stcMsg.canFDFormat = false;
stcMsg.idConfig.extended = false;
stcMsg.idConfig.identifier = 0x525;
stcMsg.dataConfig.dataLengthCode = 9;
stcMsg.dataConfig.data[0] = 0x55555555;
stcMsg.dataConfig.data[1] = 0x55555555;
stcMsg.dataConfig.data[2] = 0x55555555;
stcMsg.dataConfig.data[3] = 0x55555555;
stcMsg.dataConfig.data[4] = 0x55555555;
stcMsg.dataConfig.data[5] = 0x55555555;
stcMsg.dataConfig.data[6] = 0x55555555;
stcMsg.dataConfig.data[7] = 0x55555555;
stcMsg.dataConfig.data[8] = 0x55555555;
stcMsg.dataConfig.data[9] = 0x55555555;

Cy_CANFD_UpdateAndTransmitMsgBuffer(CY_CANFD0_TYPE, 0, &stcMsg);
}
Term_Printf("can send\n");
Cy_SysTick_DelayInUs(3000000);
getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus after %x\n", getCanStatus);

 

i tried to method all thing. why occurs this error?

 

help me.

0 Likes
1 Solution
Alfred_Tsang
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 10 solutions authored

Hi frog,

We have tested your code below based on TVII-B-E 176-pin CPU Board (CYT2B98) with TVII-B-E Base Board (using TJA1057GT), and it's able to receive message by PCAN.
may be you can focus on the configuration of TJ1145.

//init

/* CAN configuration */

const cy_stc_canfd_config_t BLE_canCfg =
{
.txCallback = CAN_TxMsgCallback_Test, // Unused.
.rxCallback = CAN_RxMsgCallback_Test, //CAN_RxMsgCallback_Test,
.rxFifoWithTopCallback = NULL, //CAN_RxFifoWithTopCallback,
.statusCallback = NULL, // Un-supported now
.errorCallback = NULL, // Un-supported now
.canFDMode = true, // Use CANFD mode
.bitrate = // Nominal bit rate settings (sampling point = 80%)
{
.prescaler = 1u - 1u, // cclk/1, When using 500kbps, 1bit = 80tq
.timeSegment1 = 63u - 1u, // tseg1 = 63tq
.timeSegment2 = 16u - 1u, // tseg2 = 16tq
.syncJumpWidth = 16u - 1u, // sjw = 16tq
},
.fastBitrate = // Fast bit rate settings (sampling point = 75%)
{
.prescaler = 1u - 1u, // cclk/1, When using 2Mbps, 1bit = 20tq
.timeSegment1 = 14u - 1u, // tseg1 = 14tq,
.timeSegment2 = 5u - 1u, // tseg2 = 5tq
.syncJumpWidth = 4u - 1u, // sjw = 4tq (2,3,4tq)
},
.tdcConfig = // Transceiver delay compensation, unused.
{
.tdcEnabled = false,
.tdcOffset = 0,
.tdcFilterWindow= 0,
},
.sidFilterConfig = // Standard ID filter
{
.numberOfSIDFilters = sizeof(stdIdFilter_Test) / sizeof(stdIdFilter_Test[0]),
.sidFilter = stdIdFilter_Test,
},
.extidFilterConfig = // Extended ID filter
{
.numberOfEXTIDFilters = sizeof(extIdFilter_Test) / sizeof(extIdFilter_Test[0]),
.extidFilter = extIdFilter_Test,
.extIDANDMask = 0x1fffffff, // No pre filtering.
},
.globalFilterConfig = // Global filter
{
.nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.rejectRemoteFramesStandard = true, // No remote frame
.rejectRemoteFramesExtended = true, // No remote frame
},
.rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0Config = // RX FIFO0, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false,
},
.rxFifo1Config = // RX FIFO1, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false, // true,
},
.noOfRxBuffers = 4u,
.noOfTxBuffers = 4u,
};

// send message

getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus pre %x\n", getCanStatus);

{
cy_stc_canfd_msg_t stcMsg;

stcMsg.canFDFormat = false;
stcMsg.idConfig.extended = false;
stcMsg.idConfig.identifier = 0x525;
stcMsg.dataConfig.dataLengthCode = 9;
stcMsg.dataConfig.data[0] = 0x55555555;
stcMsg.dataConfig.data[1] = 0x55555555;
stcMsg.dataConfig.data[2] = 0x55555555;
stcMsg.dataConfig.data[3] = 0x55555555;
stcMsg.dataConfig.data[4] = 0x55555555;
stcMsg.dataConfig.data[5] = 0x55555555;
stcMsg.dataConfig.data[6] = 0x55555555;
stcMsg.dataConfig.data[7] = 0x55555555;
stcMsg.dataConfig.data[8] = 0x55555555;
stcMsg.dataConfig.data[9] = 0x55555555;

Cy_CANFD_UpdateAndTransmitMsgBuffer(CY_CANFD0_TYPE, 0, &stcMsg);
}
Term_Printf("can send\n");
Cy_SysTick_DelayInUs(3000000);
getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus after %x\n", getCanStatus);

Alfred_Tsang_0-1652334020662.png

Alfred_Tsang_1-1652334052991.png

Thanks,

Alfred

View solution in original post

1 Reply
Alfred_Tsang
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 10 solutions authored

Hi frog,

We have tested your code below based on TVII-B-E 176-pin CPU Board (CYT2B98) with TVII-B-E Base Board (using TJA1057GT), and it's able to receive message by PCAN.
may be you can focus on the configuration of TJ1145.

//init

/* CAN configuration */

const cy_stc_canfd_config_t BLE_canCfg =
{
.txCallback = CAN_TxMsgCallback_Test, // Unused.
.rxCallback = CAN_RxMsgCallback_Test, //CAN_RxMsgCallback_Test,
.rxFifoWithTopCallback = NULL, //CAN_RxFifoWithTopCallback,
.statusCallback = NULL, // Un-supported now
.errorCallback = NULL, // Un-supported now
.canFDMode = true, // Use CANFD mode
.bitrate = // Nominal bit rate settings (sampling point = 80%)
{
.prescaler = 1u - 1u, // cclk/1, When using 500kbps, 1bit = 80tq
.timeSegment1 = 63u - 1u, // tseg1 = 63tq
.timeSegment2 = 16u - 1u, // tseg2 = 16tq
.syncJumpWidth = 16u - 1u, // sjw = 16tq
},
.fastBitrate = // Fast bit rate settings (sampling point = 75%)
{
.prescaler = 1u - 1u, // cclk/1, When using 2Mbps, 1bit = 20tq
.timeSegment1 = 14u - 1u, // tseg1 = 14tq,
.timeSegment2 = 5u - 1u, // tseg2 = 5tq
.syncJumpWidth = 4u - 1u, // sjw = 4tq (2,3,4tq)
},
.tdcConfig = // Transceiver delay compensation, unused.
{
.tdcEnabled = false,
.tdcOffset = 0,
.tdcFilterWindow= 0,
},
.sidFilterConfig = // Standard ID filter
{
.numberOfSIDFilters = sizeof(stdIdFilter_Test) / sizeof(stdIdFilter_Test[0]),
.sidFilter = stdIdFilter_Test,
},
.extidFilterConfig = // Extended ID filter
{
.numberOfEXTIDFilters = sizeof(extIdFilter_Test) / sizeof(extIdFilter_Test[0]),
.extidFilter = extIdFilter_Test,
.extIDANDMask = 0x1fffffff, // No pre filtering.
},
.globalFilterConfig = // Global filter
{
.nonMatchingFramesStandard = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.nonMatchingFramesExtended = CY_CANFD_REJECT_NON_MATCHING, // Reject none match IDs
.rejectRemoteFramesStandard = true, // No remote frame
.rejectRemoteFramesExtended = true, // No remote frame
},
.rxBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo1DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0DataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.txBufferDataSize = CY_CANFD_BUFFER_DATA_SIZE_64,
.rxFifo0Config = // RX FIFO0, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false,
},
.rxFifo1Config = // RX FIFO1, unused.
{
.mode = CY_CANFD_FIFO_MODE_BLOCKING,
.watermark = 0u,
.numberOfFifoElements = 0u,
.topPointerLogicEnabled = false, // true,
},
.noOfRxBuffers = 4u,
.noOfTxBuffers = 4u,
};

// send message

getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus pre %x\n", getCanStatus);

{
cy_stc_canfd_msg_t stcMsg;

stcMsg.canFDFormat = false;
stcMsg.idConfig.extended = false;
stcMsg.idConfig.identifier = 0x525;
stcMsg.dataConfig.dataLengthCode = 9;
stcMsg.dataConfig.data[0] = 0x55555555;
stcMsg.dataConfig.data[1] = 0x55555555;
stcMsg.dataConfig.data[2] = 0x55555555;
stcMsg.dataConfig.data[3] = 0x55555555;
stcMsg.dataConfig.data[4] = 0x55555555;
stcMsg.dataConfig.data[5] = 0x55555555;
stcMsg.dataConfig.data[6] = 0x55555555;
stcMsg.dataConfig.data[7] = 0x55555555;
stcMsg.dataConfig.data[8] = 0x55555555;
stcMsg.dataConfig.data[9] = 0x55555555;

Cy_CANFD_UpdateAndTransmitMsgBuffer(CY_CANFD0_TYPE, 0, &stcMsg);
}
Term_Printf("can send\n");
Cy_SysTick_DelayInUs(3000000);
getCanStatus = Cy_CANFD_GetTxBufferStatus(CY_CANFD0_TYPE,0);
Term_Printf("getCanStatus after %x\n", getCanStatus);

Alfred_Tsang_0-1652334020662.png

Alfred_Tsang_1-1652334052991.png

Thanks,

Alfred