|
|
使用下面的例子代码,不能使SIMO和CS为低电平:) w7 d) {. x3 c) x# f" L
void PSCInit(void)
+ _2 ?* O: r( ?, |% q{
. K9 q n+ c: R. L: G9 M; _% @ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 q& r! J3 W' S; U1 m8 G
}7 T8 j3 X0 W- ~% s' k- G6 ]7 F; G
4 w/ g/ i; k; M* g% T; j* m
void GPIOBankPinMuxSet(void)
; C8 Q+ X' s, V) c1 q: W6 k4 ]{/ L+ V; _4 _0 ~9 v
// DRDY ------------ GPIO6[14] -- 111
7 E5 Q2 c: g0 ` // SPI1_CLK ------------ GPIO2[13] -- 466 M L: P3 G- {$ Z8 Q
// SPI1_SOMI------------ GPIO2[11] -- 44) f* r% d- t( ]) Z. a( h7 ~# c
// SPI1_SIMO------------ GPIO2[10] -- 439 c8 G, f) |4 }, {$ W8 Z2 u
// SPI1_CS2 ------------ GPIO1[0] -- 17
! X' p, v( h! i, X* w // SPI1_CS3 ------------ GPIO1[1] -- 18
6 h$ ?, T( c$ U) O0 r I4 R5 N% `) F: G- Y3 p4 b; g! [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
' f& `& [, J; y+ t4 U9 M HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# y$ |# y$ ~* B5 p$ J0 r8 h* e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
# P5 J/ L0 A) X, `# K7 ?9 G: i- E) T. |, U
//DRDY5 o, \2 T7 u: H
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
s) b: ~: r; N# \/ S2 _ // CS2,CS3
7 r. `8 ~2 X" P; |# l- v6 L. f& K2 x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* F) I6 h- G- h+ t
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* T9 E( p2 J4 Q; G7 Y, E
//SIMO2 ?* \$ D) b# f/ A g" ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
9 R1 `% T/ R3 t' Z& _ //SOMI
% ~- [& p& L' N: X6 L* j2 | GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 M) h5 W. t" W+ R5 O' O& V( q //CLK
) ~' H' S1 V. l8 w GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 h% Z% X' z7 e+ w
3 S& j, E% w; z* X9 ~7 B8 \4 x! w // LDAC
9 S0 H* g( B. j3 q" W8 t! d) F5 r GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, P+ R$ y& J% M |/ y% ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 K$ A* N9 Q& E, o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
0 E9 ~' f0 G6 F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. `7 c: u/ w# N; G' J3 {) j$ E GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. o5 `% J; i4 E" k8 o4 m4 ~
}
% K ~7 f. T% X$ |0 d" z9 v2 a$ k: ^0 ?. [ y
int main(void)
( a+ a! H; k q+ g, e* Z{- W8 t; ^$ `* r
// 外设使能
$ j3 X! J/ F6 Q0 h! ? PSCInit();
+ n8 E: V+ B. r2 u) |0 a; t/ B: D5 B7 W, Z, r: h% k
8 _* q1 A# u, H8 o8 v // 管脚复用配置
& ^) J, z2 v5 Z. `; p GPIOBankPinMuxSet();
9 R+ Q, @# u+ @0 Y2 _ for(;;)' J" [4 v% ~ a: g3 Z6 O
{6 V2 \( j9 P* T& W6 B
SET_SCLK();//时钟正常输出" U; w0 M( M- e Z7 v( t8 h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 d) n" W$ `2 |1 h- @6 ]/ P4 P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 _$ c5 U( v% U: }* m5 ]: t! @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 D! d+ v: v; L ?; _; B/ n
6 j1 V) ?- ? [4 _% d+ q6 Y' T6 U delay(20);; |7 J4 R) ^& A# M0 i( b& o
CLR_SCLK();3 I/ s7 y' W* ?% k8 [) p' ^- q3 n `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& }+ S! b. H9 G' i1 t C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 u3 j; f2 y i; u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" u6 d3 U- p r3 n! q delay(20);
: @; }2 @% |" o0 L/ Z }6 {* S) J& J. q: R" ~# [
}
, x3 ?- `! X0 ^8 V1 N |
|