|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. _+ N' Z+ _* @0 \$ S- uvoid PSCInit(void)- t, g7 v2 s! V9 M- [1 }9 p& G
{
3 o: X! Y! J7 b& l# B. Y PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! w( G2 A2 ~) g2 ~
}3 Q! B# ~% K x- ~
* S( X9 z, n- P( z
void GPIOBankPinMuxSet(void)' n1 A# p K) g8 h1 h' x3 q1 ~; k
{$ }5 s- L+ T$ @. y" z
// DRDY ------------ GPIO6[14] -- 111' T0 |5 Y0 G1 {
// SPI1_CLK ------------ GPIO2[13] -- 464 C: y% L4 I2 J7 J) O3 B- X6 P2 L
// SPI1_SOMI------------ GPIO2[11] -- 44
8 P$ F6 `5 R/ M8 J2 @/ ? // SPI1_SIMO------------ GPIO2[10] -- 438 v* D" l9 e2 m F0 |
// SPI1_CS2 ------------ GPIO1[0] -- 178 Y- u/ m+ R( i( [& e
// SPI1_CS3 ------------ GPIO1[1] -- 187 }. X5 [* Q# l; m, S
/ y" H1 |2 J* m' F6 P4 w% d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 j) H* Z1 R# Q" ` e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 ]7 c( Q* s8 d" d9 D9 @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& f& V" m {' _1 |% @8 P- b t
- T- F7 e( D. ~ R; q; N) `
//DRDY% }5 d$ B/ S/ `% F/ B+ z/ k- t
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& k* v, V- U" w. c3 ^ // CS2,CS31 d' [8 o9 w! o, b
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 K# J/ @2 r) P3 i$ `* b. ^( |
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
W# Y. h( c, b* C4 n, e7 v% D6 ` //SIMO
4 g5 W, v0 ?; g7 o. y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 H: p% N: I+ H3 H9 C6 q+ K
//SOMI
0 ?, [3 y2 k3 H9 B; `7 n4 s! L GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
. }* s1 E: @' _5 c0 ` //CLK
- s/ f. x0 o+ _6 ]- k GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 B; w! l4 H0 Z0 c O2 h
% P" b8 Y% Z" B0 e5 I' }# m
// LDAC
2 |* I' r$ h; v0 [' ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 K; Q& ~" y. Q5 y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 Q; D3 ?! f0 u/ b5 |- P: c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# ~. \$ a7 W% ^4 N& N" q) m. H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: F- |5 w/ h ]4 P
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% g7 `( e5 i4 ~% x. M}
: A! M5 E7 F! o# h- y2 A; T8 A+ D7 r8 F" j+ k) N
int main(void)) w. M7 r$ J" {) g
{
! Y0 X" J1 F U3 M // 外设使能
* _( r9 y# i2 i2 f' g$ N PSCInit();
3 ~1 I! K N' `5 X
+ H2 F- R, k* f- P* D6 W( y2 ] & p& [ I0 J1 e; u1 E, W
// 管脚复用配置
/ ]9 o! @1 e# T6 J7 ` GPIOBankPinMuxSet();6 x5 ~7 `& ?2 z/ [2 m
for(;;)
) t& x7 m0 O6 s+ E9 h) J {" j' ~7 ^8 Z4 y
SET_SCLK();//时钟正常输出
0 N4 f8 a2 `+ |7 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! j4 G# L$ E$ M( u* |: w% t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 {- i( o+ y9 {: q' z8 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" f: M/ I& E9 F4 N1 x+ [
/ Q+ W: h& Q1 F) k delay(20);
" ?1 v* ~" B" o$ I$ E+ D A CLR_SCLK();3 @8 l1 b5 ?* q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 r) U' e; @7 ?5 `& |' n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ Y4 Q- ~# L/ [% D* t) P9 ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ w" U8 ?+ `" k* E- A delay(20);
3 M$ c7 ^' A3 a, V: { }
+ h) Z/ |4 L) o) i3 u}- N: W5 J6 K4 P7 |, |0 d% e# Y+ F9 r
|
|