在线时间15 小时
UID2086045
注册时间2016-1-10
NXP金币0
该用户从未签到
注册会员

- 积分
- 117
- 最后登录
- 2022-6-26
|
发表于 2020-7-22 10:58:40
|
显示全部楼层
本帖最后由 wjandsq 于 2020-7-22 11:01 编辑
if (size % 4 == 0) {
/* size is 4 bytes * n (n = 1 2 3 ... n) */
lpspi_tmp = ((LPSPI1->TCR) & (~LPSPI_TCR_FRAMESZ_MASK));
LPSPI1->TCR = (lpspi_tmp | (31U & LPSPI_TCR_FRAMESZ_MASK));
PINS_DRV_ClearPins(PTB, 1 << 17); /*<! Software Control PCS3 : SET PCS3 LOW */
for (i = 0; i < words; ++i) {
/* between word delay 3.8 us, between 4 words delay is 5us */
while (((LPSPI1->SR & LPSPI_SR_TDF_MASK) >> LPSPI_SR_TDF_SHIFT) == 0);
LPSPI1->TDR = (*( const uint32_t * ) (txdata_p));
LPSPI1->TCR = ((LPSPI1->TCR) | (LPSPI_TCR_TXMSK_MASK)); /*<! Start Transmit Hardware Clear */
LPSPI1->TCR = ((LPSPI1->TCR) & (~LPSPI_TCR_RXMSK_MASK));
LPSPI1->SR = LPSPI_SR_TDF_MASK; /*<! Clear TDF flag */
txdata_p = txdata_p + 4;
while (((LPSPI1->SR & LPSPI_SR_RDF_MASK) >> LPSPI_SR_RDF_SHIFT) == 0);
(*(uint32_t * ) (rxdata_p)) = LPSPI1->RDR;
LPSPI1->SR = LPSPI_SR_RDF_MASK; /*<! Clear RDF flag */
rxdata_p = rxdata_p + 4;
}
while (((LPSPI1->SR & LPSPI_SR_FCF_MASK) >> LPSPI_SR_FCF_SHIFT) == 0);
LPSPI1->SR |= LPSPI_SR_FCF_MASK; /*<! Clear FCF flag */
PINS_DRV_SetPins(PTB, 1 << 17); /*<! Software Control PCS3 : SET PCS3 High */
LPSPI1->CR = 0x00000000; /*<! Module Disable、Debug Disable */
return;
}
/* 2020/07/22 SPI FLASH WRITE AND READ is OK wjandsq@163.com 18979813931 */
|
|