|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ r: `! m( v2 P8 ^. Uvoid PSCInit(void)) R( q: s7 O) R2 k! Z7 }
{
( |% \/ d: n1 \" C/ ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: {7 w3 h4 L; [' |- k
}: W, `% |4 g8 ]2 Y1 f
1 Q' M. e& q8 [) ^void GPIOBankPinMuxSet(void)
/ [' x& m, Y+ X. E1 o8 J( E{
; i5 {3 `& o; I+ Z // DRDY ------------ GPIO6[14] -- 111
( U; d$ ~8 k- E/ N( e6 }8 q // SPI1_CLK ------------ GPIO2[13] -- 46
D2 l c% q% a0 {5 h // SPI1_SOMI------------ GPIO2[11] -- 44; h3 ]/ _2 f$ n8 ]5 z
// SPI1_SIMO------------ GPIO2[10] -- 43( y7 P! j8 _) Y% E3 m$ ^+ _
// SPI1_CS2 ------------ GPIO1[0] -- 17
# S3 I7 K9 X6 G5 I n // SPI1_CS3 ------------ GPIO1[1] -- 18
$ }5 ?) N# P/ _. w# d- R/ X
/ O8 f0 X5 d6 K- r$ V2 m2 ~3 i% I. i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 I) ?0 v, y+ B, c8 C& v# w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% z) I2 A6 h* s; }1 K1 W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
: k9 s) D* N( J
" p9 q0 `% h$ D //DRDY
; k0 Q: N) p! l7 } ` W, M) r- v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
+ s3 x* u! v6 i- a+ r0 b$ G8 K // CS2,CS3. U( j9 G6 x1 u4 t1 ~. E7 Z# f
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 {. G" Z- o- w: W, T: F5 P GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ C7 P7 j+ G$ ^- D
//SIMO+ V5 m0 j+ i$ @9 [% r+ H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
R8 t; R+ L9 e3 {$ Y5 N //SOMI* e* t, f4 S& \7 ~+ G7 T- ^$ y7 F
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI- N/ O4 ^ V4 W0 k; n9 D
//CLK; Y4 ~. }, k. `! k9 u1 M6 P7 T
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) C, \/ @$ [1 G: X; ~& n- W4 k
3 P/ O7 ~6 ?3 m' h$ C1 Y
// LDAC( m0 e7 U/ ]6 D' n# V" G$ ^. ~
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* A- q* h& Y$ F# g$ Y, P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' d- l8 U% P2 k; W$ Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 d6 J7 ~* F: M: |' h( n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( Q) X2 J6 Z" |! ^( b8 C6 B# h0 l GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% ^& g0 e; Q. p. ]# j6 l% H* q}- |2 G3 M4 i. |2 _
9 ` x; H, X$ v! ~
int main(void)) D8 R; {1 y3 S& o' b
{
p1 M9 ?5 m. `7 @8 A // 外设使能
6 C) _1 ~0 G: C. {# C PSCInit();/ p% I: B+ r. v) _( R" m W9 {6 @/ {
. Q) s( e q6 X. w+ c 7 q+ R, P% n) d- t8 T9 ]: K# V
// 管脚复用配置$ u% f+ M0 b1 c2 w- `9 s
GPIOBankPinMuxSet();6 C) o* R) z0 X0 A
for(;;)5 n; F; m$ T" F6 n6 ?- H
{* n" }8 b; P4 q J
SET_SCLK();//时钟正常输出2 G: I' _6 C, [4 \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 B9 m* M8 ^: X6 }3 u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS30 K- h% [% ?, ~, Z, D- D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) y4 W; ?& F- {% g: N5 x6 _
# _ P- b" n" Y5 x n: E; C
delay(20);' B+ {! E2 z1 `$ ~8 t# N) G7 {+ K2 T! t2 _
CLR_SCLK();
: T" ~2 b9 w1 W- p# T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: r4 @! }0 R/ m7 {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ N1 L2 g% G* }! u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
^. u8 Q3 Q! v8 x1 O delay(20);
% Z& r" \- a# t* F8 W' C! Q5 m+ o: o }
! `/ k1 Z- J' s* T' V$ _& ?}
6 J4 a1 X6 T( t# H: m { |
|