|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
* |5 N% Y1 z) H2 g' e9 Tvoid PSCInit(void)
/ e: F- B+ y: z5 U4 p' f( h1 U{
% v; X% h/ V/ O; L PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
V. Y F- `1 N1 Q}7 r) N+ U; s$ H) l7 M1 ^
5 g1 y5 c6 k" R: R8 u
void GPIOBankPinMuxSet(void)
0 |4 m3 h; b1 w$ r! z{
V; ]& D; B* R, d7 h/ G3 J // DRDY ------------ GPIO6[14] -- 1114 t6 p1 s% _& W9 r+ W. F6 h9 W1 q
// SPI1_CLK ------------ GPIO2[13] -- 46) @$ [ L! O. [- ~* }
// SPI1_SOMI------------ GPIO2[11] -- 44# s0 n; `3 u' f$ N$ H
// SPI1_SIMO------------ GPIO2[10] -- 43
5 ]) i- [; Q3 l& s, H // SPI1_CS2 ------------ GPIO1[0] -- 178 V" ?& x$ }+ t5 q
// SPI1_CS3 ------------ GPIO1[1] -- 18
' ~; J: }% ?0 Y! I: B% _1 W
) Z2 P. K" n+ V9 r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" P4 I* g/ S4 s& z0 m. D( ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
+ A3 R' Y) i0 r9 K/ v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& A. l- K1 p+ f& p3 E1 |: \1 v# b) I! w1 ]
//DRDY
5 X8 `2 x7 P0 l$ l5 n GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY V( J2 ^3 K' [- n
// CS2,CS32 {9 D& _; t" m; N% {% y4 I
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# X1 U6 E. O l- k6 Z* {
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: I4 i8 J e5 ]; [4 ^9 X# u
//SIMO
- K. V3 C* s+ n GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
" g4 p" J+ T* p. [ //SOMI5 I+ ?8 @8 _2 v8 @/ L
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* x8 P5 h! }& b% }+ S. w; E6 G1 ` //CLK, u- c+ r& G' E6 ~) i. i
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
9 D! ]+ ?# ?. ~% s- f$ w6 ], I6 |3 [) f& a; T" N
// LDAC$ x+ n. T1 W8 ~: f ^, F" m% x
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 M) p5 g; i5 G; t, k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 J! }# a, W& g) @2 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 A" ?; G( u* D6 ]- S3 z. D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3' g. S) W% M8 o2 T# \
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# S) K4 e, z! {: l e* z" h}
* k8 R6 T% M- F( z6 B, A$ O6 ]+ k, _. ~' }+ R
int main(void)3 M. k3 d6 Q; K- m
{# e. e2 h1 Y; C
// 外设使能7 k0 x- f! W- L K* N" X" n
PSCInit();
; {, p* s& S6 R# |+ X4 A1 e% w6 F% S( p6 v
" Y5 ]. b; {1 Y7 g" g# q& K // 管脚复用配置% l/ p0 _3 a7 M, K
GPIOBankPinMuxSet();" { Q) y3 H9 Z* B& q, K8 x
for(;;)
+ Y d0 g$ U' {9 i6 V# Y% Q {
* G1 J( _4 |' O* q( Z: v# r SET_SCLK();//时钟正常输出( z @* t7 R1 g, X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; [5 G! m% b H I; l3 E) n8 i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 u) e* E6 B' \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; {6 a- O8 B3 v
( z, j& Z! ?( R A$ y& B
delay(20);
+ c, @* }0 `/ m2 ]5 V1 ] CLR_SCLK();6 b* ?* `/ S5 K; u) A) Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 ~1 J$ _; b" u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: x' M' U/ o3 ^: P' x- [9 K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* x ` y s' _0 l' f; [ delay(20);
- Z3 t" O. Y3 q& R( a }5 r6 U! m5 C0 J
}2 }" d2 C% s. L6 b$ s2 ]8 }
|
|