|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" ?" F/ a3 n* E5 d0 Jvoid PSCInit(void)
1 r" I* d9 F' T+ \7 d' z3 E }6 ?4 P& J{9 I4 U6 D7 {0 @) `! R" M7 T
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 G: w4 s. a- t) x# Y, S: L5 ]( u}8 \+ w( E" U3 F4 {8 K+ O
0 a% w$ W, s$ ~. h* pvoid GPIOBankPinMuxSet(void)
' e4 b2 ^1 ]5 V; t{$ c8 q5 Y& w" o: }/ J+ M
// DRDY ------------ GPIO6[14] -- 111; F. C1 b& e5 N/ _) t7 [
// SPI1_CLK ------------ GPIO2[13] -- 46* y% [) @) v& f# w: M
// SPI1_SOMI------------ GPIO2[11] -- 443 r! y( }* M3 R8 W. ? Z
// SPI1_SIMO------------ GPIO2[10] -- 43* B, O3 }6 d7 |0 _
// SPI1_CS2 ------------ GPIO1[0] -- 17
Z, K2 O; g, u0 W6 D // SPI1_CS3 ------------ GPIO1[1] -- 18
w; P) b1 t- |6 T* v
m& Q9 q: g1 l: I/ m* G9 G4 m HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# }( } k, _4 K9 S3 k0 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 ?, r/ {" ^% ?) g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' c$ _: a4 x. d! M; y
) p+ s, D' Y) J+ D' N- l //DRDY6 N, ^& C N0 H& w+ |
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY' ]/ I" R5 o) v3 M W3 H$ w. J
// CS2,CS37 D/ s/ \) l b- g1 ~: q$ q9 n# {
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 Z. S8 W! ], t% ]
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 _% }5 n" ]9 `$ K //SIMO
/ \- }8 N' ?- r8 h4 Y e c3 ` GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* n$ ]6 F) ^8 u
//SOMI
0 \' w$ n9 _% w5 s/ l/ ^ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! J3 {9 J6 u# q( z: J: Z //CLK+ h: ]! j0 z) |9 D& c3 i3 Q. t! L
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ v0 @% A! j3 `9 X, A# M# l Z: V5 _) Y3 Z, b5 i2 ^
// LDAC
J# p' z1 J# U$ h' K3 R GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. d+ n7 l0 M8 y' C9 Y! b; a
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: M0 R: @4 L" y) n# h/ u; p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- H& l; Q0 ~) ~; H! f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ D- K$ C, Q; E7 Z {, R
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* D) n) l P1 p0 w, _; x, q, y}
& ]1 p/ z {/ R- m* L- ?2 A! e" N4 n; ^
int main(void)
8 u8 f5 Y2 f% H; b- k1 J{% ~# O3 B" V4 h \. \) s2 M: N
// 外设使能: q% i8 k- W* ^6 y0 D Q
PSCInit();
" T2 ]) F/ W) r
7 b9 B* e/ r/ i, O3 n P
; M/ ] o T, D* X // 管脚复用配置
: {5 _1 S5 o, X8 Q GPIOBankPinMuxSet();3 _3 H- `& F; V$ L2 t' w
for(;;)9 [$ I: R+ S2 p3 |2 v* j
{* u2 m7 t: {2 h! f6 Q* K; o3 h
SET_SCLK();//时钟正常输出
* p' G' P4 f/ Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& h; Y. @' C' {& @) h% I" Y+ L; @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ e( R& w) k: _7 y ~& ]6 a! S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& w; C+ u- c+ J' y. U/ M; J
5 X% z7 o6 |, F' L" D0 Q# p delay(20);# ]7 l7 O* m) t6 p1 Z
CLR_SCLK();) q! \% M/ C) V) b! H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
2 R& p p0 k! \0 F- v, c/ o$ O( G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 z7 g# ]! B* I9 C, u$ ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 l# z& S$ y* Z' t0 i5 B E delay(20);
( H3 k- H* }/ E( ` e" B( E }
4 Y! J, |& @& X/ D( B}0 ~) p" P* l0 f9 Y2 {
|
|