主题中讨论的其他器件:HALCOGEN
大家好、我使用的是 TMS570LC43X 评估板(主器件)我想使用 SPI (SPI3)与(从器件) ARINC HOLT 板(hi-3593)进行通信我无法从从器件读取日期请帮助我排除任何参考示例、如果您在 TMS570中是好的初始方。
void spiInit (void)
{
/*用户代码开始(2)*/
/*用户代码结束*/
/**@b 初始化@b SPI3 */
/**使 SPI 退出复位*/
spiREG3->GCR0 = 0U;
spiREG3->GCR0 = 1U;
/** SPI3主控模式和时钟配置*/
spiREG3->GCR1 =(spiREG3->GCR1 & 0xFFFFFFFCU)|((uint32)((uint32) 1U << 1U)/* CLOKMOD */
| 1U);/*主设备*/
/** SPI3使能引脚配置*/
spiREG3->INT0 =(spiREG3->INT0 & 0xFEFFFFFFU)|(uint32)((uint32) 0U << 24U);//启用 HICHZ */
/**-延迟*/
spiREG3->delay =(uint32)((uint32) 255U <<24U)/* C2TDELAY */
|(uint32)((uint32) 255U << 16U)// T2CDELAY *
|(UINT32)((UINT32) 0U <<8U)/* T2EDELAY */
|(uint32)((uint32) 0U << 0U);// C2EDELAY *
/**-数据格式0 */
spiREG3->FMT0 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 8U << 0U);/*数据字长度*/
/**-数据格式1 */
spiREG3->FMT1 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/
/**-数据格式2 */
spiREG3->FMT2 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/
/**-数据格式3 */
spiREG3->FMT3 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/
/**-设置中断级别*/
spiREG3->LVL =(uint32)((uint32) 0U <<9U)/* TXINT */
|(UINT32)((UINT32) 0U <<8U)/* RXINT */
|(UINT32)((UINT32) 0U << 6U)/* OVRNINT */
|(uint32)((uint32) 0U << 4U)/* BIERR */
|(uint32)((uint32) 0U << 3U)/* DESYNC */
|(uint32)((uint32) 0U << 2U)/* PARERR */
|(uint32)((uint32) 0U << 1U)/*超时*/
|(UINT32)((UINT32) 0U << 0U);/* DLENERR */
/**-清除所有挂起的中断*/
spiREG3->FLG |= 0xFFFFFFU;
/**-启用中断*/
spiREG3->INT0 =(spiREG3->INT0 & 0xFFFFFF0000U)
|(UINT32)((UINT32) 0U <<9U)/* TXINT */
|(UINT32)((UINT32) 0U <<8U)/* RXINT */
|(UINT32)((UINT32) 0U << 6U)/* OVRNINT */
|(uint32)((uint32) 0U << 4U)/* BIERR */
|(uint32)((uint32) 0U << 3U)/* DESYNC */
|(uint32)((uint32) 0U << 2U)/* PARERR */
|(uint32)((uint32) 0U << 1U)/*超时*/
|(UINT32)((UINT32) 0U << 0U);/* DLENERR */
/**@b 初始化@b SPI3 @b 端口*/
/**- SPI3端口输出值*/
spiREG3->PC3 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *
/**- SPI3端口方向*/
spiREG3->PC1 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *
/**- SPI3端口开漏使能*/
spiREG3->PC6 =(uint32)((uint32) 0U <<0U)/* scs[0]*/
|(uint32)((uint32) 0U << 1U)/* scs[1]*/
|(uint32)((uint32) 0U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 0U << 3U)/* SCS[3]*/
|(uint32)((uint32) 0U << 4U)/* scs[4]*/
|(uint32)((uint32) 0U << 5U)/* scs[5]*
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *
/**- SPI3端口上拉/下拉选择*/
spiREG3->PC8 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(uint32)((uint32) 1U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 1U <<11U);/* SOMI */
/**- SPI3端口上拉/下拉使能*/
spiREG3->PC7 =(uint32)((uint32) 0U <<0U)/* scs[0]*/
|(uint32)((uint32) 0U << 1U)/* scs[1]*/
|(uint32)((uint32) 0U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 0U << 3U)/* SCS[3]*/
|(uint32)((uint32) 0U << 4U)/* scs[4]*/
|(uint32)((uint32) 0U << 5U)/* scs[5]*
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *
/* SPI3将所有引脚设置为功能*/
spiREG3->PC0 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 1U <<11U);/* SOMI */
/**-初始化 TX 和 RX 数据缓冲区状态*/
G_spiPacket_t[2U].TX_DATA_STATUS = SPI_READY;
G_spiPacket_t[2U].Rx_DATA_STATUS = SPI_READY;
/**-最后启动 SPI3 */
spiREG3->GCR1 =(spiREG3->GCR1 & 0xFEFFFFFFU)| 0x01000000U;
/*用户代码开始(3)*/
/*用户代码结束*/
}
/********* 主要方案 /
U16 TX_Data_Master[8]={0x04、0x00、0x00、0x00、0x00、 0x00、0x00、0x00};
U16 TX_Data_Master1[8]={0x08、0x03、0x00、0x70、0x00、 0x00、0x00、0x00};
U16 TX_Data_Master2[8]={0x80、0x00、0x00、0x00、0x00、0x00、 0x00、0x00、0x00};
U16 RX_Data_Master[8]={0};
spiDAT1_t 数据通信 fig1_t;
dataconfig1_t.CS_hold = true;
dataconfig1_t.WDEL = false;
dataconfig1_t.DFSEL = SPI_FMT_0;
dataconfig1_t.CSNR = 0xFB;
spiInit();
//重置动态
// spiTransmitData (spiREG1,&dataconfig1_t,1,TX_Data_Master);
//[TCR]<= 0x03
TransmitData (spiREG3、&dataconfig1_t、2、TX_Data_Master1);
TransmitAndReceiveData (spiREG3、&dataconfig1_t、2、TX_Data_Master2、RX_Data_Master);
}




