|
|
使用下面的例子代码,不能使SIMO和CS为低电平: J5 x6 k# Q) ?# W
void PSCInit(void)2 @5 z+ |- M f) f( Y4 X8 J& o+ r
{
- E/ U2 t+ y9 r1 T' `" F9 N, j PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, X# K# h/ z5 M Y& e9 X* a; z
}' o. F5 ], S& e& A6 j. I2 g# g7 E" @
$ w2 R2 O+ O* H5 i6 E/ h# p/ K( _
void GPIOBankPinMuxSet(void)+ \8 L5 {2 @+ Z! B+ P+ X9 E! y
{+ F% _6 V# h$ F" Y/ _3 X9 A, F$ X% s
// DRDY ------------ GPIO6[14] -- 111
: f' {+ ?3 r$ v // SPI1_CLK ------------ GPIO2[13] -- 46
7 V s c; h( z2 S% R // SPI1_SOMI------------ GPIO2[11] -- 44: S& P0 |4 [0 C3 U a% P1 d, D
// SPI1_SIMO------------ GPIO2[10] -- 43
/ q& Q0 y0 g. ^ // SPI1_CS2 ------------ GPIO1[0] -- 17
, K$ |- x i9 L# S" F: V+ \ // SPI1_CS3 ------------ GPIO1[1] -- 18& W/ H+ z z) v- P# V W) A* m, \
& U! r( Q2 B7 O! n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: N# Y0 F9 \/ S% r' d3 o( e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; R4 k7 J; ]5 L- j3 g" o9 V: D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, y$ ~/ z9 w! A) P! b9 A
4 Y6 w# Y) p: u. h- ~: ~; n) `2 h% e //DRDY/ j, P3 u$ i* s5 C. x
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& W( A* O) _6 ^. d0 J! l& x // CS2,CS3$ M( b! [0 g; w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 q' W5 |7 e9 i4 k$ I" `+ V
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 z+ N# v3 e+ O1 ^6 z) j
//SIMO$ R5 {/ C: _; J0 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; A! D* D& ]! O% p; ? z5 M
//SOMI
5 S4 |- f$ L: }* |% _2 Z" p GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* i, J6 E# l; a3 s0 x //CLK
1 n& {, K: ~- Q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
) F/ F- `$ ^# I7 ]8 k% F% P2 z8 W* V* C4 [. b$ B& B
// LDAC9 @4 {1 Y! v' |0 a$ F
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK9 u% H# `* L/ K8 e8 w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% _( l4 X5 G% Z7 V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# |) t9 Y3 M& w1 g$ W( p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS39 @/ h& t7 [9 u- v5 }/ J3 c( I4 {& w W
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ K, r5 p% \( ?! u( |6 b8 M
}
) B* w7 y* q: Q: r, X$ P* c, Z
- \) e/ ]- V ~. t. d# lint main(void)
) z! y9 h5 U2 S' T) ^{9 o- w* [9 L" i
// 外设使能
/ U8 G. ~2 N: ~, d' E PSCInit();
8 g% a1 L8 l3 ]
+ b! S3 ^- \: l: X " L$ |1 J/ t3 w' w2 a0 ?% s
// 管脚复用配置
4 q' f7 Y4 e4 A/ b5 Z q GPIOBankPinMuxSet();
1 J# Y+ e# U6 X. b for(;;)2 I1 w `, \2 T2 Y. M+ \
{/ N+ O! U* Z4 f; K0 V4 @% e
SET_SCLK();//时钟正常输出- U9 q' N9 J' Y9 y9 }; H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% W$ q* ]/ `6 T, [' D3 r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 q* [1 G, ^" I3 X% o, E6 G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" d. g; K1 o* U+ ^
4 u) X9 {* [) _: ^2 z6 Y. u delay(20);
/ x9 u6 u+ C$ `' a- A6 d" f CLR_SCLK();
7 U# i# W% {7 b& N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 s) n4 `( I/ k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 Z' g3 |5 R/ L9 _, ^# \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# }- R% J; N S delay(20);
5 m7 P& n1 v$ ~, M& a9 W6 ?! R }
o- K# ^9 l* A9 x) f}- D7 g9 x$ R. i" m8 V3 Z& c
|
|