数据写入有问题

发表在 SFUD2020-2-13 22:34 [复制链接] 7 86

  1. msh >sf write 0x601000 1 2 3 + O+ {7 G0 ]* G+ g/ @% L' m" ?- n
  2. send:5
    & t' U" o# m2 w. u8 T/ z4 M
  3. rec:2
    ! x- ]) t6 u9 Z  L" P6 n4 T5 q
  4. send:5
    0 B" h: [% e3 B6 H, I3 N
  5. rec:0
    + T& D4 z$ ?' o
  6. send:5
      t, [9 b+ K% f0 a6 S8 K& d/ W
  7. rec:03 y$ G8 E8 m- h$ n0 ?! k
  8. Write the sf_cmd flash data success. Start from 0x00601000, size is 3.. B' t, F1 C1 r5 {9 T) Y
  9. Write data: 1 2 3 .
    & n/ O- `0 H4 H
  10. msh >sf read 0x601000 328 w( b' l2 Z0 r, ~
  11. send:5
    7 A* }0 |5 M! s0 l
  12. rec:0
    2 x8 R# m0 f! C9 T
  13. send:360100
    0 d. J9 n1 t/ l5 u  o8 g; N1 z
  14. rec:100010000000f0000000807a001000e079007 h3 H/ Z' D( u
  15. Read the sf_cmd flash data success. Start from 0x00601000, size is 32. The data is:& l& z& a* }$ P% V
  16. Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F2 n( c7 q' Y  h( g7 v7 W
  17. [00601000] 01 00 00 00 01 00 00 00 00 00 00 00 0F 00 00 00 ................) C- [) b) U3 ^7 W
  18. [00601010] 00 00 00 00 80 7A 00 00 01 00 00 00 E0 79 00 00 .....z.......y..
    . U" Z4 |4 m7 H  C

  19. + ^3 u; E6 @' `4 h7 D
  20. msh >sf read 0x601000 32
    * k0 O9 g3 O- y# @
  21. send:5
    4 @' i& k) p- p3 O
  22. rec:0
    6 Y( D( x3 S# n1 J  {2 d& K
  23. send:360100
    8 a& _2 L, `5 f4 ?) Q4 |) R
  24. rec:100010000000f0000000807a001000e07900$ i. H- }$ M0 i/ s! H" H
  25. Read the sf_cmd flash data success. Start from 0x00601000, size is 32. The data is:
    ! U& r! I& c8 R0 ^- L
  26. Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    2 G2 k. r' J* k) P
  27. [00601000] 01 00 00 00 01 00 00 00 00 00 00 00 0F 00 00 00 ................* @+ p3 K9 T+ M. ^
  28. [00601010] 00 00 00 00 80 7A 00 00 01 00 00 00 E0 79 00 00 .....z.......y..* J% a# n7 B9 x6 }- o+ I

  29. 4 {3 T. x8 \: H
  30. msh >sf write 0x601000 1 2 3
    ( f# t9 g4 i+ Y* D% \0 J# p
  31. send:5) B8 V: b5 T" G- F" q$ I: P  a. ~
  32. rec:27 ~) m9 G5 {6 e) z: X6 L  v8 }
  33. send:5
    ' O: Q( X. a- \. {$ g3 I& ^; M) l
  34. rec:0
    ( J/ k* Z3 W* f1 C
  35. send:5$ W; I" R- T/ n+ z2 y6 p1 Q
  36. rec:0
    , h0 c: K/ w9 Q) K
  37. Write the sf_cmd flash data success. Start from 0x00601000, size is 3.! `0 a1 B, ?; R2 ?; I$ p
  38. Write data: 1 2 3 .
复制代码
使用的是GD25LQ128这型号,现在能正常读取到ID, 而且sf read 读取到的数据是正确的,但是sf write 存在问题。
' E3 i8 s% p% x4 Z! c' w目前是怀疑spi底层函数存在问题,sf read 正常,则spi_send_then_rec是正常的, 而sf write不正常,不清楚这个函数最终调用的是spi中的哪个函数接口,没找到spi->wr的指向。7 ?% F: I" z" A" A& ]
/ _+ a9 x9 C* U, f3 w+ k9 d

9 E/ _  X( R9 G9 Y
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2020-2-13 22:56:01 | 显示全部楼层
找到问题了,在实现spi接口的时候,只测试了rt_spi_send_then_send 和rt_spi_send_then_recv,未测试rt_spi_transfer,sfud需要调用rt_spi_send,和rt_spi_recv函数,这个函数存在问题。所以读数据可以。写入存在问题。还需修改完善
使用道具 举报 回复
发表于 2020-2-13 23:12:29 | 显示全部楼层
  1. msh >sf read 0x601000 32
    # I! ?+ }+ C# l( p$ G& `. n# Q
  2. send:056 P' f% w- a/ ^  V/ |
  3. rec:00
    + f8 c$ W! h% v- M* m( |) `5 t7 R- h. N
  4. send:03601000# w5 `4 z3 }0 |( L8 {
  5. rec:0100000001000000000000000f00000000000000807a000001000000e0790000/ ?) y+ Q. `0 v* D# I
  6. Read the sf_cmd flash data success. Start from 0x00601000, size is 32. The data is:1 f, |+ r: W4 ^+ u* t5 m3 ]
  7. Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F; i  O! v0 q0 W0 Q
  8. [00601000] 01 00 00 00 01 00 00 00 00 00 00 00 0F 00 00 00 ................
    + J3 g" S: K. d
  9. [00601010] 00 00 00 00 80 7A 00 00 01 00 00 00 E0 79 00 00 .....z.......y..) X  B- x# `) }5 V6 {$ J
  10. " ~; |+ W5 @: w8 h2 e
  11. msh >sf write 0x601000 1 2 3 7 _' K1 G; j0 q4 Y
  12. send_cmd:06+ H0 g. k/ o. F- ]+ u0 C7 M/ x( t
  13. send:05# p, X* L1 H) P: ?; a% R: ]6 X8 k
  14. rec:02
    / @( I% W8 ^6 W
  15. send_cmd:02601000010203
    $ C- z/ S( x  J/ ?) z
  16. send:05
    # |/ k7 N" _8 b) a9 E2 G  m
  17. rec:001 ]8 ^) Q$ x* P% J; d0 U
  18. send_cmd:04  g& q! p2 i5 y" s
  19. send:05
    5 X4 {# _" _% n4 `
  20. rec:00
    , l- @1 m, E, ?* \
  21. Write the sf_cmd flash data success. Start from 0x00601000, size is 3.
    ! h+ m. D7 H4 t* G- |9 A0 R
  22. Write data: 1 2 3 .
    ) d( \7 q3 W) M0 O- Y
  23. msh >sf read 0x601000 32
    , T7 x3 Q5 A. s7 \1 t* T1 l
  24. send:050 W9 N1 n+ j/ i, {3 `0 w0 u4 ?4 R! ~
  25. rec:00! k4 n! S" N6 L2 [- Q& ]
  26. send:036010006 Q( j1 M6 m% t* W0 o) r- I
  27. rec:0100000001000000000000000f00000000000000807a000001000000e0790000# H4 K- C& C+ o
  28. Read the sf_cmd flash data success. Start from 0x00601000, size is 32. The data is:
    / _5 `9 t: C. B/ K1 a+ ?3 O, q
  29. Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F% a+ v' ], l6 U: K
  30. [00601000] 01 00 00 00 01 00 00 00 00 00 00 00 0F 00 00 00 ................% Q! \% n% B' U# m# }* v- n
  31. [00601010] 00 00 00 00 80 7A 00 00 01 00 00 00 E0 79 00 00 .....z.......y..
复制代码

, `, K$ ?- \) S; d) Y& J# z, C& n4 O6 e3 T) k+ ~4 h
修改了函数接口之后,sf write 函数依然存在问题。对flash操作不熟悉,不知道现在这个指令顺序是否是正确的。
* O+ L) c& y+ y& j0 F! D4 d8 l有人能指导下么?
使用道具 举报 回复
发表于 2020-2-14 10:52:27 | 显示全部楼层
分析了下,指令没有错误,难道还是我的send函数存在问题?
使用道具 举报 回复
发表于 2020-2-14 10:56:25 | 显示全部楼层
感觉楼主是在个新芯片上移植SPI驱动?要不先上个逻辑分析仪看看?
使用道具 举报 回复
发表于 2020-2-14 11:25:17 | 显示全部楼层
本帖最后由 freedom195 于 2020-2-14 11:29 编辑 ! X: O% S( F: [6 W8 ?1 w( S
aozima 发表于 2020-2-14 10:56- v6 B3 d0 n7 q1 u% W
感觉楼主是在个新芯片上移植SPI驱动?要不先上个逻辑分析仪看看?

, n8 }% m1 t, N# z的确是在新芯片上移植的,K210,读是可以的,而且flash复位指令也确实写入了。感觉不出spi驱动还有什么问题
' c4 f, z" w6 G7 ^隔离在家,没有逻辑分析仪
/ o  d+ v+ k$ w# T, `* W$ @' [8 R9 o1 m2 w4 {+ T+ J
使用道具 举报 回复
发表于 2020-2-14 14:27:03 | 显示全部楼层
本帖最后由 freedom195 于 2020-2-14 14:28 编辑
' ^; M  R/ J( k* g$ r$ w. L" A% ]/ d3 ^+ r
spi 写flash 写入最小是256字节,写入低于256的字节的话,应该先读取,在写入,不知道我这么理解是对的么?
( V  M+ k' B6 s: Y如果是对的,那为何写操作是在判断写使能之后,就直接写入了呢?. Y8 {% p" ~) [$ ~0 r* x8 M9 r
2 o  A' f& o# Q6 |* n( O9 C1 M
这里的写操作调用了page256_or_1_byte_write  这个函数,但实际并没有写入256字节。3 G6 a+ Y/ K/ S# ~7 K# ^
; W! O" Z: B1 D, H
使用道具 举报 回复
发表于 2020-2-14 23:42:45 | 显示全部楼层
本帖最后由 freedom195 于 2020-2-14 23:49 编辑 , o3 U) V' y& W9 o
; P/ U/ n& k1 F; ^+ o8 I1 w
必须先erase之后,才可以写入数据
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表