|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 R: p+ |! H3 W! \: u. Gvoid PSCInit(void)
+ J6 P! o* R- d9 O9 ]{
* ]. Z. b/ }( i6 a g PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# n+ Z5 [9 w2 j" G% E0 z$ ~}
& M2 A, s/ t. \, c! ~! Q' Y( }5 V; x. X
void GPIOBankPinMuxSet(void)
( [# d) J/ f% H" ^$ h- e' p{
7 l( G% o- T6 B& z5 g- `* B1 I // DRDY ------------ GPIO6[14] -- 1118 y$ ] R6 d1 \; T& K
// SPI1_CLK ------------ GPIO2[13] -- 46 s _$ z" l$ ]( A
// SPI1_SOMI------------ GPIO2[11] -- 44
2 ~ \. _" e' W2 ~ // SPI1_SIMO------------ GPIO2[10] -- 439 @( {1 y& H: a' ^. E- ]
// SPI1_CS2 ------------ GPIO1[0] -- 177 H( d% j+ T; b: `1 ~
// SPI1_CS3 ------------ GPIO1[1] -- 18+ v5 ~: ^& x$ ]+ I
7 B( I# _6 `$ z7 ^$ N' w6 ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);0 w9 Q$ d9 {, a, V$ }$ r/ I$ E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 o. c+ D+ c) o: A* D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( K$ u/ ~, ^: T( v5 o
. S" ]% _' u* X6 Q ^" ^ ?# u6 f //DRDY+ x2 j+ D0 `# p2 u
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 G$ O+ U6 Y( @5 t) n& {; p& y
// CS2,CS3
( X1 O# x$ |6 r* U/ | GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; j4 w6 ^" @( }* ?' K2 `
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* j4 P/ J7 M9 L% b d, F! c
//SIMO
/ |4 A. ~. j$ ^! C k GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: j, ]+ Y# I( C! q6 Q/ ~; m x
//SOMI, ^1 b. Y* z% W P2 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* a* }0 j4 U3 B" O; j* h/ T //CLK
0 T/ n) H: c$ h) b# w7 W' _ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" \ s* ?" k0 X1 [; z4 i# @! i; ]) ~- n' H4 n6 z
// LDAC0 Y: Z$ N% B! t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK8 a0 K) B6 a# M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: f3 ]' _/ p3 k% E9 H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 h+ e1 E+ a. f1 z8 `: X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 C: Q" l0 u3 z4 ~0 I2 w/ G' [/ b GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 m0 H7 k7 I( i
}( { c1 Q% g+ V/ D' C
, U( z+ g( L: c& U' @int main(void)0 e, t; D% v" g* p8 B9 X; s' _( _
{- c% j2 M# o& W4 j" [
// 外设使能$ [3 C. l' Y0 N# ]/ t/ a2 T
PSCInit();' b5 N+ c0 Y! j3 ~% g7 s
$ Y1 K, v+ X$ J/ X
, _; [: R' @1 y' O, {" @' @/ f( @
// 管脚复用配置
* V/ W6 h5 D4 _2 y% x GPIOBankPinMuxSet();" x8 i+ ^) q! _6 b9 m& _7 E# W, U
for(;;)
) Y* \' i) I F4 z }/ J7 Y3 c {, L6 _! }: G1 {& E
SET_SCLK();//时钟正常输出
# h4 r1 g! m% M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 p# @5 h! b6 {1 Y$ X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 i2 J4 i! n( t7 A1 a1 V( A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; E$ Y! a, j# e& g9 ]5 P
# Z0 t: o5 o0 [5 _
delay(20);
, a% g! w/ {2 [' j CLR_SCLK();
% O# O, P' z1 |1 N- K: ]0 r' H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
C0 v5 s$ @# i+ C7 l, V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* t( |$ [* l9 q$ B4 F
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 y% h$ a7 `* g! D* q/ m" i3 g delay(20);
- |: A, T6 C# _9 e. R( B; v }
d; N. i8 E; q9 W1 ?1 F; t}
# P. I y# p) `. N8 l9 W( @ |
|