at25df041a 소자 플래시 메모리 프로그래밍 질문드려요~
1. 서론
at25df041a 소자를 사용해서 플래쉬 프로그램을 하고 있는데요
플래시는 사용하기 전에 erase한 후에 tx 사용하는 방식으로 알고 있는데요..
TX가 전혀 되지 않아요.ㅜㅜㅜ
프로그램은 IAR 프로그램을 사용중이며, IPS 방식으로 진행하고 있습니다.
자체적으로 IPS 통신이 제대로 되는지 확인한 상태이며, at25df041a 소자에서 디바이스 정보를 불러오는
것 까지는 성공했습니다. (Hex 코드로 Read Manufacturer and Device ID 0x9F)
2. 시도 방법
AT25DF041A 에서 사용방법은 대부분 아래사이트인 아두이노에서 사용하는 방식으로 시도했습니다
https://github.com/LowPowerLab/SPIFlash/blob/master/SPIFlash.cpp
테스트 방법은 아래와 같이 하였고, 3 Byte로 전송해야한다고 데이터시트에 나와있습니다 그래서 아래와
같이 하였습니다.
Block Erase 4Kbytes : 0x20 (3 Byte : 0x00, 0x00, 0x00)
Write Enable : 0x06 (0 Byte)
Byte/Page Program (1 to 256 Bytes) : 0x02 (3 Byte : 0x00, 0x00, 0x00)
Read Array : 0x0B (3 Byte : 0x00, 0x00, 0x00)
이렇게 하였습니다.
그런데 RX하면 데이터가 없고 0xff로 발생됩니다 ㅜㅜ
위에 주소번지는 256 Bytes 씩 주소번지가 0000FFh - 000000h 여서 0x00 3개를 전송하였습니다.
3. 기타 명령어
이 외에도 제가 너무 많은 명령을 보내서 보호될 수 있을 것 같아 Unprotect Sector, chip erase
등 다른 명령어를 다 보내봤는데 전혀 TX가 되지 않는 것 같아요
순서를 잘못했는지 뭐가 문제인지 잘모르겠습니다...
도와주세요ㅠㅠㅠㅠㅠㅠ
데이터 시트 첨부하였습니다.
5페이지가 주소번지가 작성되어 있는 "메모리 아키텍쳐 다이어그램"
7페이지가 커맨드 명령이 작성되어 있는 "커맨드 리스트"
입니다
첨부 | 파일 크기 |
---|---|
AT25DF041A.pdf | 740.8 KB |
제가 상황이 잘 이해가 안되서 그러는데
제가 상황이 잘 이해가 안되서 그러는데
0. spi로 flash r/w를 하고 있음
1. spi tx/rx는 성공
2. flash write한 다음(spi tx 성공) flash를 read해보면 0xff로 값이 바뀌지 않음
인 상태인건가요?
flash r/w할 때 protection 걸려있어서 password와 같이 플래시 커맨드를 보내야 하는 상황은 아닌가요?
저도 초보자라 기본적인 부분만 혹시해서 적어봅니다
안녕하세요!
0. spi로 flash r/w를 하고 있음
- 제가 사용하고 있는 소자가 spi 방식으로 r/w 해야한다고 합니다
1. spi tx/rx는 성공
- 구현한 프로그램에서 spi 프로그램을 잘못한 것인지 소자를 제외한 통신 테스트 했는데 문제 없었습니다.
2. flash write한 다음(spi tx 성공) flash를 read해보면 0xff로 값이 바뀌지 않음
- 여기서 문제점이 write가 제대로 됬는지 확인이 되지 않습니다 ㅜㅜ 어떤 데이터를 입력하더라도 출력은 0xff로 출력됩니다
------------------------------------
flash r/w할 때 protection 걸려있어서 password와 같이 플래시 커맨드를 보내야 하는 상황은 아닌가요?
- 이 부분을 정확히 모르겠어요.. 일단 제가 찾은 예제에서는 protect 라는 명령어를 따로 보내주지는 않는 것 같더라구요.. password 라고 하면 어떤 것을 말씀하시는 것인지요? 제가 잘 몰라서요;;
먼저 WP는 확인하셨죠?
먼저 WP는 확인하셨죠?
그 다음 SPRL도 보셔서 현재 Lock 되어있는지 확인해보시는게 좋을 것 같습니다
댓글 달기