w801如何实现psram扩容?

发布于 2023-08-07 10:10:56

使用aps6404l作为psram的扩容芯片,wm_psram_config(0);psram_init(1);初始化后uint8_t membase = (uint8_t)(0x30000000);image.png结果:
image.png现象和不接psram芯片相同,都是只能读取 写入的最后一个字节。因为sdk中没有对psram芯片的底层数据读取和输入接口函数,所以无法调试是否扩容芯片正确连接。成功扩容的是否方便告知选用了哪个psram芯片

查看更多

关注者
0
被浏览
3.9k
1 个回答
AnatolSher
AnatolSher 认证专家 2023-08-08
Lover of the ocean, yachts and Arduino

Hello! I observed this behavior when I bought a batch of defective chips.
After installing working chips on the Air103 board, everything works well

Code for testing:

#include "Arduino.h"
// Tested on Air103 board with APS6404L-3SQR-SN chip
PSRAM_HandleTypeDef hpsram;
static void PSRAM_Init(void);
static uint8_t *psram_buf = (uint8_t *)PSRAM_ADDR_START;
void setup()
{
  Serial.begin(115200);
  PSRAM_Init();
}
void loop()
{
  uint8_t temp[100];
  int i = 0;
  memset(psram_buf, 0, 100);
  for(i = 0; i < 100; i++)
  {
    Serial.printf("%x ", psram_buf[i]);
  }
  Serial.printf("\r\n");
  for(i = 0; i < 100; i++)
  {
    temp[i] = i % 256;
  }

  memcpy(psram_buf, temp, 100);
  for(i = 0; i < 100; i++)
  {
    Serial.printf("%x ", psram_buf[i]);
  }
  Serial.printf("\r\n");
  delay(1000);
}

static void PSRAM_Init(void)
{
  __HAL_RCC_PSRAM_CLK_ENABLE();
  __HAL_RCC_GPIO_CLK_ENABLE();
  // For Air103
  __HAL_AFIO_REMAP_PSRAM_CS(GPIOB, GPIO_PIN_27);
  __HAL_AFIO_REMAP_PSRAM_CLK(GPIOA, GPIO_PIN_15);
  __HAL_AFIO_REMAP_PSRAM_D0(GPIOB, GPIO_PIN_2);
  __HAL_AFIO_REMAP_PSRAM_D1(GPIOB, GPIO_PIN_3);
  __HAL_AFIO_REMAP_PSRAM_D2(GPIOB, GPIO_PIN_4);
  __HAL_AFIO_REMAP_PSRAM_D3(GPIOB, GPIO_PIN_5);
  hpsram.Instance = PSRAM;
  hpsram.Init.Div = 3;
  hpsram.Init.Mode = PSRAM_MODE_QSPI;
  if (HAL_PSRAM_Init(&hpsram) != HAL_OK)
  {
    Serial.printf("Init error...\r\n");
  }
}

This code is based on HAL 0.6.0 and will work on w801

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览