2174618_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2174618_ja-JP

2174618_ja-JP

TJA1145 スリープモードに入ることができません

Example_SW_TJA1145プログラムを使用しています。サンプルプログラムのChangeToSleepOperation関数を使ってスリープモードに入ると、デバッグ中にPOイベント情報が発生することがわかりました。スリープモードに入ろうとするたびに、POイベント情報によってブロックされてしまいます。

なぜこのようなことが起こるのでしょうか?また、どうすれば解決CANるのでしょうか?

image.png

Re: TJA1145 Cannot Enter Sleep mode

こんにちは、

ウェイクアップイベントが有効になっていない、または保留中のイベント情報がクリアされていないため、スリープモードへの移行が保護されている可能性があります。詳細については、 AH1903 (機密保持契約に基づくセキュアファイル)の3.2.4章および5.3.2章をご覧ください。

Screenshot 2025-04-24 093415.png

Screenshot 2025-04-24 093624.png

BRs、トーマス

Re: TJA1145 Cannot Enter Sleep mode

以下は私の SPI_Send プログラムです。このプログラムに何か問題がありますか?

NXP_UJA11XX_Error_Code_t SPI_Send(Byte* data, NXP_UJA11XX_SPI_Msg_Length_t length, Byte mask, NXP_UJA11XX_Access_t type) {

	Byte Txdata[2] = {0};
	Byte Rxdata[2] = {0};

	Byte ConfirmTxdata[2] = {0};
	Byte ConfirmRxdata[2] = {0};

	uint16_t sendlen = 0;
	uint32_t timeout = 1000000;

	Txdata[0] = data[0];//发送或读取的地址
	ConfirmTxdata[0] = data[0] | NXP_UJA11XX_READ;

	if(NXP_UJA11XX_SPI_MSG_LENGTH_16 == length)
	{
		sendlen = 2;//要发送的Byte的数量
		switch(type)
		{
			case NXP_UJA11XX_WRITE:
			{
				Txdata[1] = data[1];//发送的数据
				SPI3_Send(Txdata, Rxdata, sendlen, timeout);//发送地址和数据
			}
			break;
			case NXP_UJA11XX_READ:
			{
				SPI3_Send(Txdata, Rxdata, sendlen, timeout);//发送地址读取数据
			}
			break;
			case NXP_UJA11XX_INTERRUPT:
			{
				SPI3_Send(Txdata, Rxdata, sendlen, timeout);//发送地址读取数据
			}
			break;
			default:
				return NXP_UJA11XX_ERROR_SPI_HW_FAIL;

		}
		//对读取或写入的数据进行验证
		switch(type)
		{
			case NXP_UJA11XX_WRITE:
			{
				SPI3_Send(ConfirmTxdata, ConfirmRxdata, sendlen, timeout);//读取写入的数据
				if(ConfirmRxdata[1] == data[1])//读取和写入数据一致
				{
					return NXP_UJA11XX_SUCCESS;
				}
				else if( (ConfirmRxdata[0] == 0x00 && ConfirmRxdata[1] == 0x00)||
						 (ConfirmRxdata[0] == 0xFF && ConfirmRxdata[1] == 0xff) )
				{
					return NXP_UJA11XX_ERROR_SPI_HW_FAIL;
				}
				else
				{
					return NXP_UJA11XX_ERROR_WRITE_FAIL;
				}
			}
			break;
			case NXP_UJA11XX_READ:
			{
				SPI3_Send(ConfirmTxdata, ConfirmRxdata, sendlen, timeout);//再次读取数据
				if(ConfirmRxdata[1] == Rxdata[1])//两次读取的数据相同
				{
					data[1] = Rxdata[1];//传回读取到的数据
					return NXP_UJA11XX_SUCCESS;
				}
				else
				{
					return NXP_UJA11XX_ERROR_READ_FAIL;
				}
			}
			break;
			case NXP_UJA11XX_INTERRUPT:
			{
				SPI3_Send(ConfirmTxdata, ConfirmRxdata, sendlen, timeout);//再次读取数据
				if( (Rxdata[1] & mask) != 0 )
				{
					return NXP_UJA11XX_ERROR_WRITE_FAIL;
				}
			}
			break;
			default:
				return NXP_UJA11XX_ERROR_SPI_HW_FAIL;

		}
	}
	else//消息长度不为16bit
	{

	}
	return NXP_UJA11XX_SUCCESS;
}
Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 05:47 PM
Updated by: