-
版主请问一下,搭建好文件系统,需要从SD卡中读取RGB565的bmp格式的TXT文件里面的数据怎么编写代码可以存到数组里面啊?长度有点长
-
版主你好,怎么样获取SCR、SSR、CSR的内容?
-
本帖最后由 CCss131 于 2019-10-10 16:06 编辑
while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND| SDIO_FLAG_STBITERR)))
{
if (SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL) != RESET)
{
*(tempscr + index) = SDIO_ReadData();
index++;
if(index > 1 )
break;
}
注释了这段上面这段代码,SD卡初始化成功,到了SD_EraseTest()的擦除测试里面的
uint32_t SD_DMAEndOfTransferStatus(void)
{
return (uint32_t)DMA_GetFlagStatus(DMA2_FLAG_TC4); //Channel4 transfer complete flag.
}
在DMA_GetFlagStatus中bitstatus就一直重置SD_WaitReadOperation
-
本帖最后由 CCss131 于 2019-10-9 16:55 编辑
版主你好,补充一下在运行到开启4bits模式中的FindSCR函数中就判断不了了,是什么原因?SCR寄存器读到是0x0800067E
-
版主你好,硬件加了上拉,程序是可以识别有没有插入TF卡的,但是到了初始化卡那里就循环判断了
进入这个判断,这时SDIO_FLAG的值是0x00200000,根据介绍是 SDIO_FLAG_RXDAVL: Data available in receive FIFO 这个值也是0x00200000,所以在判断不等于RESET值时,不符合就一直循环在这两个函数中。所以应该怎么解决?
FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG)
{
FlagStatus bitstatus = RESET;
/* Check the parameters */
assert_param(IS_SDIO_FLAG(SDIO_FLAG));
if ((SDIO->STA & SDIO_FLAG) != (uint32_t)RESET)
{
bitstatus = SET;
}
else
{
bitstatus = RESET;
}
return bitstatus;
}
-
对,把while封装成一个函数,再重新在mian中的while调用就进不去这条函数,只是读到who am i 之后就没有时序了,就是没有进入到这条函数中。
-
void lps33hw_get_data(void)
{
/*
* Read output only if new value is available
*/
lps33hw_reg_t reg;
lps33hw_read_reg(&dev_ctx, LPS33HW_STATUS, (uint8_t *)®, 1);
if (reg.status.p_da)
{
memset(data_raw_pressure.u8bit, 0x00, sizeof(int32_t));
lps33hw_pressure_raw_get(&dev_ctx, data_raw_pressure.u8bit);
pressure_hPa = lps33hw_from_lsb_to_hpa( data_raw_pressure.i32bit);
sprintf((char*)tx_buffer, "pressure [hPa]:%6.2f\r\n", pressure_hPa);
tx_com( tx_buffer, strlen( (char const*)tx_buffer ) );
}
if (reg.status.t_da)
{
memset(data_raw_temperature.u8bit, 0x00, sizeof(int16_t));
lps33hw_temperature_raw_get(&dev_ctx, data_raw_temperature.u8bit);
temperature_degC = lps33hw_from_lsb_to_degc( data_raw_temperature.i16bit );
sprintf((char*)tx_buffer, "temperature [degC]:%6.2f\r\n", temperature_degC );
tx_com( tx_buffer, strlen( (char const*)tx_buffer ) );
}
}
我是说将这一部分封装成一条函数,在mian中先初始化它配置寄存器的那一部分,然后再在while(1)调用lps33hw_get_data,但是代码初始化它之后,就不判断状态寄存器和输出数据了
-
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=605216&highlight=LPS22HB
版主,就像你所介绍的一样,需要多次循环数据,不止31次才准备完毕,这是硬件的关系吗?打印数据的话可以直接获取的得到的值吧,还有如果我人为对它进行加压,怎么才能快速捕捉它的数据
-
对的我用这段代码初始化之后直接while(1)是可以一直读STATUS寄存器, 然后我定义这段为另一个函数在mian中的while(1)中调用,时序去到初始化CTRL_REG1之后,就没时序了,仿真发现是调用lps33hw_read_reg时进入硬件错误死循环,应该怎么解决,我想的是不断输出然后打印到PC的串口助手
-
初始化化第一条函数之后CTRL_REG1 (10h)里面读到时0x02,配置CTRL_REG1 (10h)寄存器的ODR2 之后直接就没再读直接读取状态寄存器了,后面就只输出一次数据
1. lps33hw_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
2.lps33hw_data_rate_set(&dev_ctx, LPS33HW_ODR_10_Hz);
-
对的对的我弄反了,换算应该是这个顺序 0x3F 0x10 0x70,得出是1009,
手册里面说:为了保证BDU特性的正确行为,PRESS_OUT_H (2Ah)必须是最后一个地址
阅读。所以那个0X3F是(2Ah)里面的内容。
BDU(1)块数据更新。默认值:0
(0:连续更新;
1:读取MSB和LSB后才更新输出寄存器) 这个怎么理解是SPI的MSB和LSB 还是头文件的声明的LSB?
#define LPS33HW_FROM_LSB_TO_hPa(lsb) (float)( lsb / 4096.0f )
#define LPS33HW_FROM_LSB_TO_degC(lsb) (float)( lsb / 100.0f )
-
本帖最后由 CCss131 于 2019-9-17 14:16 编辑
版主你好,
1.我的这个气压传感器读PRESS_OUT_XL (28h)是0x70 0x10 0x3F换算出来是1793mbar,我测了好多次都是在2000左右,应该是什么问题?
2.温度TEMP_OUT_L (2Bh)的值换算是除以100,得出来的值也是比较大,是什么原因?
3.应该怎么配置初始化,能让STATUS (27h)判断到P.DA为1,不断输出检测的压力数据啊?因为只输出一次数据,后面读状态寄存器里面的值都是0x00。
-
版主你好,请问一下INT_DRDY这个引脚有什么用,要怎么配置它?用ADC采样吗?还有现在用硬件的SPI驱动LPS33HW,程序卡在了这里,应该怎么解决
whoamI = 0;
lps33hw_device_id_get(&dev_ctx, &whoamI);
if ( whoamI != LPS33HW_ID )
while(1)
-
版主帮我看一下
-
搞不好,版主有没有用STM32F103驱动的相似例程
-
我是直接用 platform_read函数在while(1)里面读,是不是用模拟I2C会容易一点
-
读不出来,没有读到WHO AN I里面的 10110001 是不是我配置的函数不正确?
-
波形是这样的,应该怎么去读WHO AM I的地址啊?
-
版主你好,我用SPI通信,MISO没有返回值,在platform_write中对应
u8 SPIx_Send_Byte(SPI_TypeDef* SPIx, u8 dat)
{
u8 retry = 0;
while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET)
{
retry++;
if(retry > 200)
return 0;
}
SPI_I2S_SendData(SPIx, data);
retry = 0;
while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET)
{
retry++;
if(retry > 200)
return 0;
}
return SPI_I2S_ReceiveData(SPIx);
里面死循环了才出来,应该是什么问题
-
littleshrimp 发表于 2019-9-3 19:17
stm32f103的标准库吗
对的对的,STM32CubeMX软件我还没用过,我用的板子是STM32的C8T6,可以像他这样改吗https://bbs.eeworld.com.cn/thread-1064955-1-1.html