|
使用下面的例子代码,不能使SIMO和CS为低电平:
7 `7 I/ H" A; q( Y# V* Q S X2 kvoid PSCInit(void)
; U6 V- L) V8 u9 l5 A{2 K- N. h7 ^/ M4 ]) W) R
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
5 y; Q6 r V7 V; G( d9 a) y6 `}! a/ ^/ H; Q9 G! z) u& `7 ]
7 I$ j0 R" c+ \! Q2 n: N2 U/ zvoid GPIOBankPinMuxSet(void)$ C5 }3 I; k$ G" J' |$ x
{9 j5 l# L/ H0 g# G; S7 c( g3 a# e; w
// DRDY ------------ GPIO6[14] -- 111
( f8 o4 e. I6 J( A$ T8 n- X) D // SPI1_CLK ------------ GPIO2[13] -- 46
' F' _# P' | Z7 B- x0 d* i // SPI1_SOMI------------ GPIO2[11] -- 448 ]$ y1 y5 R! k! w/ O
// SPI1_SIMO------------ GPIO2[10] -- 43: m) p: U y$ g
// SPI1_CS2 ------------ GPIO1[0] -- 173 o# S! v% r. d+ {: J, F
// SPI1_CS3 ------------ GPIO1[1] -- 18$ ~+ X! ?3 U# \0 B7 w: ~( X
t$ q4 K4 j# W' j3 f6 O G: [* |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; M7 j. a1 U$ T J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: s! s, R( c$ M, S9 i. t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ t1 k f7 N g' T8 A/ T6 ~; A' Z# X( y7 o8 V( m3 u# q
//DRDY; u3 s: V2 X+ e, @
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
6 d3 a6 R& m5 N0 x1 w# j% p/ h // CS2,CS3% X3 V( h5 Z* {, k) ]# n! O
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& E: t- B; y- k0 c GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! V% Q1 }: P/ z4 q) |6 X
//SIMO
1 |5 c; l5 D; M( N$ P8 C GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. R$ F- b5 D" Z; z
//SOMI L m% f, F6 t2 j+ ^
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 O% ?- l' Q' @2 ?8 N! ]
//CLK$ P1 z+ ?/ Z/ H5 V
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) ?+ m9 d, e/ g( b2 t& W9 [% e0 [7 {( Q+ i) U
// LDAC6 z! W2 `0 ~; n$ }) E
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 u+ Y$ @' c( B% g% A* T; X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 [0 f, ?4 y! v! u GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, S. V* a* y$ ?$ S9 X. c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% }2 Q$ W* L" v3 O$ L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 b2 u, P# f1 l' s9 X$ d
}% C0 o: h: K- |
' O0 ^: V% g5 _( B- Y% y; jint main(void) D4 Y& W4 N# O5 n% A* Z
{
) i& e, L% w. T // 外设使能1 F3 M# G7 o% k# {! K
PSCInit();
; o2 m! O; S0 a. b! Y
/ B) i) z2 D6 W9 ^' k2 P
* \( ^9 I- j0 M5 N // 管脚复用配置
) d" O# b( G1 J1 z GPIOBankPinMuxSet();
# \$ w$ x) t. ], n: F for(;;)- c+ |, n. X" K
{$ B; n9 L0 m* G/ D/ O' _, [% l
SET_SCLK();//时钟正常输出
8 I9 ~( u4 \& G: y* B+ Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& s s1 a' a" c# r( w3 |: Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; | J, Z% _" W4 H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# |# s- y* ~: h5 C( ^& ]2 {# ^
3 {+ V) H; G7 `: Y1 G5 ~" w' _/ D, P
delay(20); {3 l' n+ e* q1 {( [8 ]
CLR_SCLK();! a2 W W1 L9 W- f- @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ y: U3 l3 S& _. y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& o" ]; N5 x4 ^2 }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 b# C! N& G' k! J delay(20);* \8 [; S+ C4 J
}( ?* i4 t$ [; {, E$ ^$ h
}
! b! ]& H9 a7 w1 a |
|