|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ o4 ~/ Q1 r: }4 T
void PSCInit(void)# y) C1 o2 W1 b1 R& O6 V- s
{
5 ?: ?; w" k. J% h/ D PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ j7 \: y! L6 I2 D& o}, t$ Y$ r4 c g- O
1 [9 O, w2 w% |; U
void GPIOBankPinMuxSet(void)6 y( G; V* L- _0 J, D: N
{ d' @9 ~! ?. {% V6 L- J2 n* G% f1 ^- c
// DRDY ------------ GPIO6[14] -- 111; t. b/ |" ^: R5 c! N# ^. v
// SPI1_CLK ------------ GPIO2[13] -- 46
3 V F* m$ R8 E& z // SPI1_SOMI------------ GPIO2[11] -- 44* {" Z$ K5 t: |8 n! S6 e
// SPI1_SIMO------------ GPIO2[10] -- 43
& C2 d* t% K" _) {, e- T; j* f // SPI1_CS2 ------------ GPIO1[0] -- 177 ~8 f# j9 B t! }. Z- ^/ s
// SPI1_CS3 ------------ GPIO1[1] -- 188 l; M; `: Y5 X
) p2 Z, g3 i9 d8 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
, F, J( t9 u6 L- L5 e, ~7 G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
1 a; y, b% q) g8 s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);9 p" w2 C3 o" y$ {* Q. R+ o
d9 v; W3 y+ ?& V2 c3 n //DRDY
* C: x3 S8 P% _$ u5 o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 V% G) [) r" u
// CS2,CS3& A9 j8 @2 z5 Q- h: K& U
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 Q! G+ G6 ]- u4 X% ~
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 p# e* k2 ], r/ ]8 l- { //SIMO0 `. a- b7 [2 O
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 y6 N7 _: p; d) e5 T
//SOMI
8 G& V1 I6 }: j( L GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: Z# m. J0 F/ c, o# O9 O- O
//CLK
0 `; t! E( i8 j GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) ?9 r5 ^( R9 D* Y' H3 |
9 d( r! }3 a* }9 h
// LDAC$ F) {8 N$ ~# |% M2 H0 O
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. j( X. v1 e& p& I" A$ u/ d: d& O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' h4 Z# @) Q4 c; c0 E( H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 H) F+ Z0 o$ G' X7 o& W' Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 [0 P) v* ~8 ?5 i+ e GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; [2 q( d8 Q/ |- N1 ^ `2 c- ^}
5 ?$ \* ]0 m. \4 T6 H4 V8 o j, z" j' F' a- n6 c: }
int main(void)
( U' F. X9 \6 {' Z{
: }7 \) i& I6 X! ?" G9 d // 外设使能
. U( I4 C% R0 o8 \* W- |4 q PSCInit();8 {/ K# y, c% A# c2 T0 X. D
) e. t* _2 ~9 X$ x
, b p; n; E1 V7 Q // 管脚复用配置
) d2 R: O6 z4 b( r: @) B1 `/ X/ T( ] GPIOBankPinMuxSet();9 F' J3 }; ]3 r
for(;;)
: j3 A+ L. m3 o8 h8 o {1 ?6 X2 {* L& S G1 D/ m( Q
SET_SCLK();//时钟正常输出* c" K0 F( K1 D
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 w; X: {4 ~) b' L# Z, W8 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, }& w; X9 u& i: D# Y9 E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 p d* Y; K& B
0 S) B2 Y4 U. i9 A6 |3 k0 z
delay(20);+ l1 H1 Y# J' P/ w; A* \ M- d
CLR_SCLK();+ ?7 c1 a3 v, T8 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% Q( v" T: k1 _* r# Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ ^( M, O* _3 | v" U2 T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 z$ J. W* c& ] j
delay(20);
2 t$ r+ T) ~3 [, k0 J }
0 b7 S5 Z! j* U}2 s" M4 \6 }2 G
|
|