|
使用下面的例子代码,不能使SIMO和CS为低电平:
& b* \/ K/ J7 w, u" s+ }1 T3 Gvoid PSCInit(void)" |4 h2 Y* |/ ]1 _$ w4 k6 t; y
{
. e. N3 P' H* O- n6 U$ @ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 p. n- U% Q L& Q5 z2 |5 x; L
}3 s6 G& W6 c; ^7 |; g2 Y+ W& w
9 Q Q( W8 P6 o1 t
void GPIOBankPinMuxSet(void)* C; D4 w4 X" Z+ k) U
{& N' L8 ~6 p0 R9 h6 Q2 C
// DRDY ------------ GPIO6[14] -- 111
6 n$ L" x- b: E+ J% W // SPI1_CLK ------------ GPIO2[13] -- 46
) F) {( K2 g% r+ z3 q- O& ~5 s // SPI1_SOMI------------ GPIO2[11] -- 449 v3 n/ T* ~' K. j9 k% j9 r5 N
// SPI1_SIMO------------ GPIO2[10] -- 43, l: {* e1 a. k$ z! R! O
// SPI1_CS2 ------------ GPIO1[0] -- 17
& {% I. O9 ^; c3 Z$ T. S0 ? // SPI1_CS3 ------------ GPIO1[1] -- 18
" p6 j2 m! H: `( I6 f1 G( P- p
& a( _% w7 }$ [* v, X: m O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);9 ~! b' p$ }) M- A% T. A' y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 N0 {) y: k G7 W! `0 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 s) t/ e1 j3 t6 ] N. R+ s) e1 C
h3 v+ p; X5 j/ m //DRDY9 @) Q6 N: Y4 t& P
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( U# Q" I+ a" K3 N7 D; Q& |6 r$ l
// CS2,CS3
$ `! {7 l! \# h* V GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 ~4 J4 t: {: E& ?% U' g7 n GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3& G/ ]; z4 p# j2 y
//SIMO& Z/ Z6 d2 E: S: T, t0 ?+ W* B' Z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, l1 t$ r/ K) z6 E //SOMI
2 }5 m& v* t7 Y6 q4 ~4 i GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI) d0 R5 J, A; K. o
//CLK
+ H% X. T' y; N GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; H2 j9 Z$ M& g- C* M- e9 K$ v! G2 D6 k% [1 ^8 a) S
// LDAC
]/ u( p, T# g! x" a7 ~2 L GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" e& Q5 k& p% h K+ ]& l% x5 E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 J1 e6 ^! T1 x6 E! P# {* D9 s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# a- S( ^- M }, J$ Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! s0 h! w5 o; \7 u+ ]' Q$ F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& _3 O6 T) u; ?9 a6 B* H}) [- E; }* Q( F7 c# K
, W* g7 l& o& `0 Z! j5 X: _* wint main(void)7 }0 | K2 e1 n+ a7 I+ y* D
{) }6 Y" V# b3 i% V- c( |
// 外设使能
# c& M! [ v |( L- ]8 d PSCInit();
& Z4 d- T: f7 }
9 D, L* C6 S! M; v
7 g5 O7 t$ M8 e/ \8 q // 管脚复用配置( O1 t# J% {$ A3 {0 q
GPIOBankPinMuxSet();9 D% U& p7 U( v9 q
for(;;) n6 {' p8 L' n d# ^2 n
{: Q3 L6 _1 ^2 g' B1 w
SET_SCLK();//时钟正常输出% g2 D5 \2 N& R. T& K w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ d& G) ?' W- C) V( ^6 u2 u2 J0 y) X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ @5 O! @! Z9 X9 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( i8 U, H' K8 p, y: t5 Q
7 ~+ }* W) `! \; c* d- v; y k d0 B delay(20);
$ _6 N! O2 a/ h. s; K' R- q CLR_SCLK();* [$ r- R8 ~" a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 D5 ~! L! m! N* `. Y# Y# \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! G/ w$ ?8 _( g% {5 F: O. E% C( I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ p$ ]) Q2 G% p) y! A8 w2 Z; ^ delay(20);
/ ]% b. `7 M7 N- V5 { }" d5 ~( l1 j I1 u" |/ S1 V! T8 v
}
( T* N9 _) E, M |
|