|
最近在调M051的SPI,写了下面的这个测试程序, 碰到一些问题, 不知道是什么原因.
int main (void)
{
uint8_t temp;
uint32_t buffer[2];
uint8_t u8Item = 0x0;
int i;
Hardware_Init();
/* Configure SPI0 as a master, 8-bit transaction */
DrvSPI_Open(eDRVSPI_PORT0, eDRVSPI_MASTER, eDRVSPI_TYPE6, 8);
DrvSPI_SetEndian(eDRVSPI_PORT0, eDRVSPI_MSB_FIRST); //MSB
/* Disable the automatic slave select function of SPI0 and select the slave select pin. */
DrvSPI_DisableAutoSS(eDRVSPI_PORT0);
DrvSPI_SetClockFreq(eDRVSPI_PORT0, 2000000, 0);
do{
DrvGPIO_SetBit(E_PORT4,E_PIN0); //方便示波器观察用的
buffer[0]=0xaa;
DrvSPI_SingleWrite(eDRVSPI_PORT0, &buffer[0]); //写个数据
temp=0xff;
DrvSPI_SingleRead(eDRVSPI_PORT0, &buffer[0]); //然后读
temp=buffer[0];
printf("out value=%02x\r\n", temp);
buffer[0]=0x55;
DrvSPI_SingleWrite(eDRVSPI_PORT0, &buffer[0]);
temp=0xff;
DrvSPI_SingleRead(eDRVSPI_PORT0, &buffer[0]);
temp=buffer[0];
printf("out value=%02x\r\n", temp);
DrvGPIO_ClrBit(E_PORT4,E_PIN0);
}
while(1);
}
硬件上使用的 是SPI0, 我将MOSI 和MISO 短接上, 串口看到数据是对的
可我把MOSI和MISO 断开, 串口上看到的数据还是对的
为什么会这样? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|